ホームページ >バックエンド開発 >PHPチュートリアル >データの前処理と特徴エンジニアリングに PHP を使用する方法

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

WBOY
WBOYオリジナル
2023-07-29 15:34:53856ブラウズ

データ前処理と特徴エンジニアリングに 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。