Rumah >pembangunan bahagian belakang >tutorial php >Penjelasan terperinci tentang algoritma K-means dalam PHP
Penjelasan terperinci tentang algoritma K-means dalam PHP
Algoritma K-means ialah algoritma analisis pengelompokan yang biasa digunakan dan digunakan secara meluas dalam bidang perlombongan data dan pembelajaran mesin. Artikel ini akan memperkenalkan secara terperinci proses pelaksanaan algoritma K-means menggunakan PHP dan memberikan contoh kod.
Algoritma K-means membahagikan titik sampel dalam set data kepada berbilang kelompok, supaya jarak antara titik sampel dalam kelompok adalah sekecil mungkin, dan jarak antara titik sampel antara kelompok adalah sebagai besar mungkin. Proses pelaksanaan khusus adalah seperti berikut:
1.1 Permulaan
Pertama, bilangan kluster K perlu ditentukan. Kemudian titik sampel K dipilih secara rawak daripada set data sebagai titik pusat awal.
1.2 Tugasan
Untuk setiap titik sampel dalam set data, hitung jarak antara titik itu dan semua titik tengah dan tetapkan ia kepada kelompok terdekat.
1.3 Kemas kini
Bagi setiap kluster, kirakan min titik sampel dalam kluster sebagai titik tengah baharu.
1.4 Ulangi lelaran
Ulang peruntukan dan proses kemas kini sehingga titik sampel dalam gugusan tidak lagi berubah, atau bilangan lelaran yang telah ditetapkan dicapai.
Berikut ialah contoh kod untuk melaksanakan algoritma K-means menggunakan PHP:
<?php function kMeans($data, $k, $iterations) { // 初始化簇中心点 $centers = []; for ($i = 0; $i < $k; $i++) { $centers[] = $data[array_rand($data)]; } // 迭代分配和更新过程 for ($iteration = 0; $iteration < $iterations; $iteration++) { $clusters = array_fill(0, count($centers), []); foreach ($data as $point) { // 计算样本点与各个中心点的距离 $distances = []; foreach ($centers as $center) { $distance = calculateDistance($point, $center); $distances[] = $distance; } // 将样本点分配到最近的簇 $clusterIndex = array_search(min($distances), $distances); $clusters[$clusterIndex][] = $point; } // 更新中心点 $newCenters = []; foreach ($clusters as $cluster) { $newCenter = calculateMean($cluster); $newCenters[] = $newCenter; } // 判断是否达到终止条件 if ($centers == $newCenters) { break; } $centers = $newCenters; } return $clusters; } // 计算两个样本点之间的欧氏距离 function calculateDistance($point1, $point2) { $distance = 0; for ($i = 0; $i < count($point1); $i++) { $distance += pow($point1[$i] - $point2[$i], 2); } return sqrt($distance); } // 计算簇内样本点的均值 function calculateMean($cluster) { $mean = []; $dimension = count($cluster[0]); for ($i = 0; $i < $dimension; $i++) { $sum = 0; foreach ($cluster as $point) { $sum += $point[$i]; } $mean[] = $sum / count($cluster); } return $mean; } // 测试代码 $data = [ [2, 10], [2, 5], [8, 4], [5, 8], [7, 5], [6, 4], [1, 2], [4, 9], ]; $k = 2; $iterations = 100; $clusters = kMeans($data, $k, $iterations); print_r($clusters); ?>
Dalam kod di atas, kami mula-mula mentakrifkan fungsi kMeans untuk melaksanakan algoritma K-means. Kemudian fungsi calculateDistance dilaksanakan untuk mengira jarak Euclidean antara dua titik sampel. Akhirnya, fungsi calculateMean dilaksanakan, yang digunakan untuk mengira min titik sampel dalam kelompok.
Mengikut kod di atas, kami melakukan analisis kelompok pada set data dua dimensi yang mudah dan mencetak hasilnya. Output akan menunjukkan peruntukan kluster.
Array ( [0] => Array ( [0] => Array ( [0] => 2 [1] => 10 ) [1] => Array ( [0] => 2 [1] => 5 ) [2] => Array ( [0] => 1 [1] => 2 ) ) [1] => Array ( [0] => Array ( [0] => 8 [1] => 4 ) [1] => Array ( [0] => 5 [1] => 8 ) [2] => Array ( [0] => 7 [1] => 5 ) [3] => Array ( [0] => 6 [1] => 4 ) [4] => Array ( [0] => 4 [1] => 9 ) ) )
Keputusan di atas menunjukkan bahawa algoritma K-means membahagikan titik sampel kepada dua kelompok Kelompok pertama mengandungi tiga titik sampel [2, 10], [2, 5] dan [1, 2]. kelompok mengandungi lima titik sampel lain.
Melalui kod dan data sampel di atas, kita dapat melihat bahawa proses penggunaan PHP untuk melaksanakan algoritma K-means adalah sangat mudah, dan pada masa yang sama, hasil pengelompokan yang berkesan boleh diperolehi.
Ringkasan
Algoritma K-means ialah algoritma analisis kelompok yang biasa digunakan Dengan membahagikan titik sampel dalam set data kepada berbilang kelompok, ia mencapai matlamat untuk meminimumkan jarak dalam kelompok dan memaksimumkan jarak antara kelompok. Artikel ini menyediakan prosedur terperinci dan contoh kod untuk melaksanakan algoritma K-means menggunakan PHP dan menunjukkannya dengan set data dua dimensi yang mudah. Pembaca boleh melaraskan parameter yang berkaitan mengikut keperluan sebenar untuk menerapkannya pada tugas analisis data mereka sendiri.
Atas ialah kandungan terperinci Penjelasan terperinci tentang algoritma K-means dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!