Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk melaksanakan algoritma jiran terdekat K dalam PHP
Cara melaksanakan K algoritma jiran terdekat dalam PHP
K algoritma jiran terdekat ialah algoritma pembelajaran mesin yang mudah dan biasa digunakan, digunakan secara meluas dalam masalah klasifikasi dan regresi. Prinsip asasnya adalah untuk mengelaskan sampel yang akan dikelaskan ke dalam kategori di mana sampel K yang diketahui terdekat tergolong dengan mengira jarak antara sampel yang akan dikelaskan dan sampel yang diketahui. Dalam artikel ini, kami akan memperkenalkan cara melaksanakan algoritma jiran terdekat K dalam PHP dan memberikan contoh kod.
Data sampel yang diketahui:
$knownSamples = tatasusunan(
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)),
); ) );
Kira jarak
$sum = 0; for ($i = 0; $i < count($sample1); $i++) { $sum += pow($sample1[$i] - $sample2[$i], 2); } return sqrt($sum);
Mencari K jiran terdekat
Dalam langkah ini, kita perlu menulis fungsi terdekat yang mencari jarak K sampel sampel yang diketahui untuk dikelaskan. Berikut ialah contoh fungsi:$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);
Klasifikasi
Akhir sekali, kita perlu menulis fungsi untuk mengelas berdasarkan kategori K yang terdekat . Berikut ialah contoh fungsi:$classes = array(); foreach ($neighbors as $neighbor) { $classes[] = $neighbor['class']; } $classCounts = array_count_values($classes); arsort($classCounts); return key($classCounts);
Contoh penuh
Berikut ialah kod sampel lengkap: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;
Artikel ini memperkenalkan cara melaksanakan algoritma jiran terdekat K dalam PHP. Dengan mengira jarak antara sampel yang akan dikelaskan dan sampel yang diketahui, K jiran terdekat ditemui, dan kemudian dikelaskan mengikut kategori jiran terdekat ini. Algoritma jiran terdekat K ialah algoritma yang mudah dan biasa digunakan sesuai untuk banyak masalah klasifikasi dan regresi. Melaksanakan algoritma jiran terdekat K menggunakan PHP adalah agak mudah dan hanya memerlukan penulisan beberapa fungsi untuk diselesaikan. Saya harap artikel ini dapat membantu pembaca memahami dan menggunakan algoritma jiran terdekat K.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan algoritma jiran terdekat K dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!