K 최근접 이웃 알고리즘을 PHP에서 구현하는 방법
K 최근접 이웃 알고리즘은 간단하고 일반적으로 사용되는 기계 학습 알고리즘으로 분류 및 회귀 문제에 널리 사용됩니다. 기본 원리는 분류할 샘플과 알려진 샘플 사이의 거리를 계산하여 가장 가까운 K개의 알려진 샘플이 속하는 범주로 분류할 샘플을 분류하는 것입니다. 이 글에서는 K-최근접 이웃 알고리즘을 PHP에서 구현하는 방법을 소개하고 코드 예제를 제공합니다.
알려진 샘플 데이터:
$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 classify($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;
위 코드는 샘플의 카테고리를 다음으로 출력합니다. 분류되다.
요약:
이 글에서는 K 최근접 이웃 알고리즘을 PHP에서 구현하는 방법을 소개합니다. 분류하려는 샘플과 알려진 샘플 간의 거리를 계산하여 K개의 최근접 이웃을 찾은 후 이러한 최근접 이웃의 범주에 따라 분류합니다. K 최근접 이웃 알고리즘은 많은 분류 및 회귀 문제에 적합한 간단하고 일반적으로 사용되는 알고리즘입니다. PHP를 사용하여 K-최근접 이웃 알고리즘을 구현하는 것은 비교적 간단하며 완료하려면 몇 가지 함수만 작성하면 됩니다. 이 글이 독자들이 K-최근접 이웃 알고리즘을 이해하고 적용하는 데 도움이 되기를 바랍니다.
위 내용은 PHP에서 K 최근접 이웃 알고리즘을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!