Heim >Backend-Entwicklung >PHP-Tutorial >So implementieren Sie den K-Nächste-Nachbarn-Algorithmus in PHP
So implementieren Sie den K-Nächste-Nachbarn-Algorithmus in PHP
Der K-Nächste-Nachbarn-Algorithmus ist ein einfacher und häufig verwendeter Algorithmus für maschinelles Lernen, der häufig bei Klassifizierungs- und Regressionsproblemen verwendet wird. Sein Grundprinzip besteht darin, die zu klassifizierende Probe in die Kategorie zu klassifizieren, zu der die nächsten K bekannten Proben gehören, indem der Abstand zwischen der zu klassifizierenden Probe und den bekannten Proben berechnet wird. In diesem Artikel stellen wir die Implementierung des K-Nearest-Neighbor-Algorithmus in PHP vor und stellen Codebeispiele bereit.
Bekannte Beispieldaten:
$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)),
);
Zu klassifizierende Beispieldaten:
$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;
Der obige Code gibt die Kategorie des Beispiels aus klassifiziert werden.
Zusammenfassung:
Dieser Artikel stellt vor, wie man den K-Nächste-Nachbarn-Algorithmus in PHP implementiert. Durch Berechnen des Abstands zwischen der zu klassifizierenden Stichprobe und der bekannten Stichprobe werden K nächste Nachbarn gefunden und dann entsprechend der Kategorie dieser nächsten Nachbarn klassifiziert. Der K-Algorithmus für den nächsten Nachbarn ist ein einfacher und häufig verwendeter Algorithmus, der für viele Klassifizierungs- und Regressionsprobleme geeignet ist. Die Implementierung des K-Nearest-Neighbor-Algorithmus mit PHP ist relativ einfach und erfordert nur das Schreiben einiger Funktionen. Ich hoffe, dass dieser Artikel den Lesern helfen kann, den K-Nearest-Neighbor-Algorithmus zu verstehen und anzuwenden.
Das obige ist der detaillierte Inhalt vonSo implementieren Sie den K-Nächste-Nachbarn-Algorithmus in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!