Comment implémenter l'algorithme K plus proche voisin en PHP
L'algorithme K plus proche voisin est un algorithme d'apprentissage automatique simple et couramment utilisé, largement utilisé dans les problèmes de classification et de régression. Son principe de base est de classer l'échantillon à classer dans la catégorie à laquelle appartiennent les K échantillons connus les plus proches en calculant la distance entre l'échantillon à classer et les échantillons connus. Dans cet article, nous présenterons comment implémenter l'algorithme du K-plus proche voisin en PHP et fournirons des exemples de code.
Exemples de données connues :
$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)),
);
Exemples de données à classer :
$unknownSample = array('features' => array(2, 2 ) );
fonction 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($neighbours) {
$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;
Le code ci-dessus affichera la catégorie de l'échantillon dans être classé.
Résumé :
Cet article présente comment implémenter l'algorithme K voisin le plus proche en PHP. En calculant la distance entre l'échantillon à classer et l'échantillon connu, K les plus proches voisins sont trouvés, puis classés selon les catégories de ces plus proches voisins. L'algorithme K plus proche voisin est un algorithme simple et couramment utilisé, adapté à de nombreux problèmes de classification et de régression. L'implémentation de l'algorithme K plus proche voisin à l'aide de PHP est relativement simple et ne nécessite que l'écriture de quelques fonctions. J'espère que cet article pourra aider les lecteurs à comprendre et à appliquer l'algorithme du K-plus proche voisin.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!