PHP で K 最近傍アルゴリズムを実装する方法
K 最近傍アルゴリズムは、シンプルで一般的に使用される機械学習アルゴリズムであり、分類および回帰問題で広く使用されています。その基本原理は、分類対象サンプルと既知サンプルとの距離を計算することにより、最も近いK個の既知サンプルが属するカテゴリに分類対象サンプルを分類することである。この記事では、PHP で K 最近傍アルゴリズムを実装する方法とコード例を紹介します。
既知のサンプル データ:
$knownSamples = array(
array('class' => 'A', 'features' => array(2, 3)), array('class' => 'A', 'features' => array(4, 5)), array('class' => 'B', 'features' => array(1, 1)), array('class' => 'B', 'features' => array(3, 2)),
);
分類されるサンプル データ:
$unknownSample = array('features' => array(2, 2));
function euclideanDistance($sample1, $sample2) {
$sum = 0; for ($i = 0; $i < count($sample1); $i++) { $sum += pow($sample1[$i] - $sample2[$i], 2); } return sqrt($sum);
}
function findNeighbors($knownSamples, $unknownSample, $k) {
$distances = array(); foreach ($knownSamples as $knownSample) { $distance = euclideanDistance($knownSample['features'], $unknownSample['features']); $distances[] = array('class' => $knownSample['class'], 'distance' => $distance); } usort($distances, function ($a, $b) { return $a['distance'] - $b['distance']; }); return array_slice($distances, 0, $k);
}
function destroy($neighbors) {
$classes = array(); foreach ($neighbors as $neighbor) { $classes[] = $neighbor['class']; } $classCounts = array_count_values($classes); arsort($classCounts); return key($classCounts);
}
function euclideanDistance($sample1, $sample2) { $sum = 0; for ($i = 0; $i < count($sample1); $i++) { $sum += pow($sample1[$i] - $sample2[$i], 2); } return sqrt($sum); } function findNeighbors($knownSamples, $unknownSample, $k) { $distances = array(); foreach ($knownSamples as $knownSample) { $distance = euclideanDistance($knownSample['features'], $unknownSample['features']); $distances[] = array('class' => $knownSample['class'], 'distance' => $distance); } usort($distances, function ($a, $b) { return $a['distance'] - $b['distance']; }); return array_slice($distances, 0, $k); } function classify($neighbors) { $classes = array(); foreach ($neighbors as $neighbor) { $classes[] = $neighbor['class']; } $classCounts = array_count_values($classes); arsort($classCounts); return key($classCounts); } $knownSamples = array( array('class' => 'A', 'features' => array(2, 3)), array('class' => 'A', 'features' => array(4, 5)), array('class' => 'B', 'features' => array(1, 1)), array('class' => 'B', 'features' => array(3, 2)), ); $unknownSample = array('features' => array(2, 2)); $neighbors = findNeighbors($knownSamples, $unknownSample, 3); $class = classify($neighbors); echo "待分类样本的类别为:" . $class;
上記のコードは、分類されるサンプルのカテゴリを出力します。
概要:
この記事では、PHP を使用して K 最近傍アルゴリズムを実装する方法を紹介します。分類されるサンプルと既知のサンプルの間の距離を計算することにより、K 個の最近傍が見つかり、これらの最近傍のカテゴリに従って分類されます。 K 最近傍アルゴリズムは、多くの分類および回帰問題に適したシンプルで一般的に使用されるアルゴリズムです。 PHP を使用した K 最近傍アルゴリズムの実装は比較的簡単で、いくつかの関数を記述するだけで完了します。この記事が読者の K 最近傍アルゴリズムの理解と適用に役立つことを願っています。
以上がPHP で K 最近傍アルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。