Introduction
Dans ce laboratoire, nous explorerons l'algorithme des K Plus Proches Voisins, un outil puissant pour la classification de points de données. En le mettant en œuvre en JavaScript, nous serons en mesure de classifier de nouveaux points de données en fonction de leur proximité avec des points de données étiquetés existants, ce qui en fait un outil précieux pour diverses applications, telles que les systèmes de recommandation et la reconnaissance d'images. Grâce à ce laboratoire, nous acquerrons une compréhension plus approfondie de la manière dont les algorithmes d'apprentissage automatique fonctionnent et de la manière dont ils peuvent être mis en œuvre dans des scénarios du monde réel.
Algorithme des K Plus Proches Voisins
Pour utiliser l'algorithme des K Plus Proches Voisins, suivez ces étapes :
- Ouvrez le Terminal/SSH et tapez
node. - Classifiez un point de données par rapport à un ensemble de données étiquetées à l'aide de l'algorithme des k plus proches voisins.
- Appliquez la méthode
Array.prototype.map()sur lesdatapour les convertir en objets. Chaque objet contient la distance euclidienne de l'élément à partir depoint, calculée à l'aide deMath.hypot(),Object.keys()et sonlabel. - Utilisez
Array.prototype.sort()etArray.prototype.slice()pour obtenir leskplus proches voisins depoint. - Utilisez
Array.prototype.reduce()en combinaison avecObject.keys()etArray.prototype.indexOf()pour trouver lelabelle plus fréquent parmi eux.
Voici un exemple de code qui implémente l'algorithme des K Plus Proches Voisins :
const kNearestNeighbors = (data, labels, point, k = 3) => {
const kNearest = data
.map((el, i) => ({
dist: Math.hypot(...Object.keys(el).map((key) => point[key] - el[key])),
label: labels[i]
}))
.sort((a, b) => a.dist - b.dist)
.slice(0, k);
return kNearest.reduce(
(acc, { label }, i) => {
acc.classCounts[label] =
Object.keys(acc.classCounts).indexOf(label) !== -1
? acc.classCounts[label] + 1
: 1;
if (acc.classCounts[label] > acc.topClassCount) {
acc.topClassCount = acc.classCounts[label];
acc.topClass = label;
}
return acc;
},
{
classCounts: {},
topClass: kNearest[0].label,
topClassCount: 0
}
).topClass;
};
Voici comment utiliser le code :
const data = [
[0, 0],
[0, 1],
[1, 3],
[2, 0]
];
const labels = [0, 1, 1, 0];
kNearestNeighbors(data, labels, [1, 2], 2); // 1
kNearestNeighbors(data, labels, [1, 0], 2); // 0
Sommaire
Félicitations ! Vous avez terminé le laboratoire sur les K Plus Proches Voisins. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.