データの前処理と特徴エンジニアリングに PHP を使用する方法

WBOY
リリース: 2023-07-29 15:38:01
オリジナル
809 人が閲覧しました

データ前処理と特徴エンジニアリングに PHP を使用する方法

データ前処理と特徴エンジニアリングはデータ サイエンスにおいて非常に重要なステップであり、データのクリーンアップ、欠損値の処理、特徴の抽出と変換の実行に役立ちます。 、機械学習および深層学習モデルに必要な入力データを準備します。この記事では、PHP を使用してデータの前処理と特徴量エンジニアリングを行う方法について説明し、開始するためのコード例をいくつか示します。

  1. データのインポート
    まず、外部データ ソースからデータをインポートする必要があります。状況に応じて、データベース、CSV ファイル、Excel ファイル、またはその他のデータ ソースからデータをロードできます。ここでは CSV ファイルを例として、PHP の fgetcsv 関数を使用して CSV ファイル内のデータを読み取ります。
$csvFile = 'data.csv';
$data = [];

if (($handle = fopen($csvFile, 'r')) !== false) {
    while (($row = fgetcsv($handle)) !== false) {
        $data[] = $row;
    }
    fclose($handle);
}

// 打印数据
print_r($data);
ログイン後にコピー
  1. データ クリーニング
    データ クリーニングはデータ前処理の一部であり、欠損値、外れ値、重複値の処理が含まれます。以下に、いくつかの一般的なデータ クリーニング操作と、対応する PHP コードの例を示します。
  • 欠損値の処理: フィーチャが null か空かを判断することで欠損値を処理し、対応する埋め込み操作または削除操作を実行します。
foreach ($data as &$row) {
    for ($i = 0; $i < count($row); $i++) {
        if ($row[$i] === null || $row[$i] === '') {
            // 填充缺失值为0
            $row[$i] = 0;
        }
    }
}
ログイン後にコピー
  • 外れ値の処理: しきい値を設定することで、外れ値を平均、中央値、最頻値などに置き換えます。
foreach ($data as &$row) {
    for ($i = 0; $i < count($row); $i++) {
        if ($row[$i] < $lowerThreshold || $row[$i] > $upperThreshold) {
            // 替换异常值为平均值
            $row[$i] = $meanValue;
        }
    }
}
ログイン後にコピー
  • 重複値の処理: データが重複しているかどうかを判断し、削除します。
$newData = [];
$uniqueKeys = [];

foreach ($data as $row) {
    $key = implode('-', $row);
    if (!in_array($key, $uniqueKeys)) {
        $newData[] = $row;
        $uniqueKeys[] = $key;
    }
}

// 更新数据
$data = $newData;
ログイン後にコピー
  1. 特徴抽出と変換
    特徴抽出と変換は特徴エンジニアリングの一部であり、生データから効果的な特徴を抽出してモデルのトレーニングと予測を容易にするのに役立ちます。以下に、いくつかの一般的な特徴抽出と変換操作、および対応する PHP コード例を示します。
  • 離散特徴コーディング: 離散特徴をデジタル コーディングに変換して、モデル処理を容易にします。
$categories = ['cat', 'dog', 'rabbit'];
$encodedData = [];

foreach ($data as $row) {
    $encodedRow = [];
    foreach ($row as $value) {
        if (in_array($value, $categories)) {
            // 使用数字编码离散特征值
            $encodedRow[] = array_search($value, $categories);
        } else {
            // 原样保留其他特征值
            $encodedRow[] = $value;
        }
    }
    $encodedData[] = $encodedRow;
}
ログイン後にコピー
  • 特徴の標準化: モデルのトレーニングと予測を容易にするために、特定のルールに従って特徴データをスケーリングします。
$normalizedData = [];

foreach ($data as $row) {
    $mean = array_sum($row) / count($row); // 计算平均值
    $stdDev = sqrt(array_sum(array_map(function ($value) use ($mean) {
        return pow($value - $mean, 2);
    }, $row)) / count($row)); // 计算标准差

    $normalizedRow = array_map(function ($value) use ($mean, $stdDev) {
        // 标准化特征值
        return ($value - $mean) / $stdDev;
    }, $row);
    $normalizedData[] = $normalizedRow;
}
ログイン後にコピー
  1. データの準備とモデルのトレーニング
    データの前処理と特徴エンジニアリングの後、データを準備し、トレーニングと予測に機械学習または深層学習モデルを使用できます。ここでは、モデルをトレーニングする例として、PHP-ML ライブラリの K-Means クラスタリング アルゴリズムを使用します。
require 'vendor/autoload.php';

use PhpmlClusteringKMeans;

$clusterer = new KMeans(3); // 设定聚类数为3
$clusterer->train($normalizedData);

$clusterLabels = $clusterer->predict($normalizedData);

// 打印聚类结果
print_r($clusterLabels);
ログイン後にコピー

上記は、PHP をデータの前処理と特徴エンジニアリングに使用する方法の簡単な例です。もちろん、データ前処理や特徴エンジニアリングには他にも多くの操作や手法があり、具体的な選択や実装は特定の問題やニーズに基づいて決定できます。この記事が、データ前処理と特徴量エンジニアリングを開始し、機械学習と深層学習モデルをトレーニングするための強固な基盤を築くのに役立つことを願っています。

以上がデータの前処理と特徴エンジニアリングに PHP を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!