PHP의 K-평균 알고리즘에 대한 자세한 설명
K-평균 알고리즘은 일반적으로 사용되는 클러스터링 분석 알고리즘으로 데이터 마이닝 및 기계 학습 분야에서 널리 사용됩니다. 이번 글에서는 PHP를 이용하여 K-means 알고리즘을 구현하는 과정을 자세히 소개하고 코드 예시를 제공하겠습니다.
K-평균 알고리즘은 데이터 세트의 샘플 포인트를 여러 클러스터로 나누어 클러스터 내 샘플 포인트 간의 거리를 최대한 줄이고 클러스터 간 샘플 포인트 간의 거리를 다음과 같이 만듭니다. 가능한 한 크게. 구체적인 구현 과정은 다음과 같습니다.
1.1 초기화
먼저 클러스터 K의 개수를 결정해야 합니다. 그런 다음 K개의 샘플 포인트가 데이터 세트에서 초기 중심점으로 무작위로 선택됩니다.
1.2 할당
데이터 세트의 각 샘플 포인트에 대해 해당 포인트와 모든 중심점 사이의 거리를 계산하고 가장 가까운 클러스터에 할당합니다.
1.3 업데이트
각 클러스터에 대해 클러스터에 있는 샘플 포인트의 평균을 새로운 중심점으로 계산합니다.
1.4 반복 반복
클러스터의 샘플 포인트가 더 이상 변경되지 않거나 미리 결정된 반복 횟수에 도달할 때까지 할당 및 업데이트 프로세스를 반복합니다.
다음은 PHP를 사용하여 K-평균 알고리즘을 구현하는 코드 예제입니다.
<?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); ?>
위 코드에서는 먼저 K-평균 알고리즘을 수행하기 위해 kMeans 함수를 정의합니다. 그런 다음 두 샘플 포인트 사이의 유클리드 거리를 계산하기 위해 계산 거리 함수가 구현됩니다. 마지막으로 클러스터 내 샘플 포인트의 평균을 계산하는 데 사용되는calculateMean 함수가 구현됩니다.
위 코드에 따라 간단한 2차원 데이터 세트에 대해 군집 분석을 수행하고 결과를 인쇄합니다. 출력에는 클러스터 할당이 표시됩니다.
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 ) ) )
위의 결과는 K-평균 알고리즘이 샘플 포인트를 두 개의 클러스터로 나누는 것을 보여줍니다. 첫 번째 클러스터에는 세 개의 샘플 포인트 [2, 10], [2, 5] 및 [1, 2]가 포함됩니다. 클러스터에는 5개의 다른 샘플 포인트가 포함되어 있습니다.
위의 코드와 샘플 데이터를 통해 PHP를 사용하여 K-평균 알고리즘을 구현하는 과정이 매우 간단함과 동시에 효과적인 클러스터링 결과를 얻을 수 있음을 알 수 있습니다.
요약
K-평균 알고리즘은 일반적으로 사용되는 군집 분석 알고리즘으로, 데이터 세트의 샘플 포인트를 여러 군집으로 나누어 군집 내 거리를 최소화하고 군집 간 거리를 최대화한다는 목표를 달성합니다. 이 기사에서는 PHP를 사용하여 K-평균 알고리즘을 구현하기 위한 자세한 절차와 코드 예제를 제공하고 이를 간단한 2차원 데이터 세트로 보여줍니다. 독자는 실제 필요에 따라 관련 매개변수를 조정하여 자신의 데이터 분석 작업에 적용할 수 있습니다.
위 내용은 PHP의 K-평균 알고리즘에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!