Introducción
En este laboratorio, exploraremos el algoritmo de K Vecinos más Cercanos, una herramienta poderosa para la clasificación de puntos de datos. Al implementar este algoritmo en JavaScript, podremos clasificar nuevos puntos de datos basados en su proximidad a puntos de datos etiquetados existentes, lo que lo convierte en una herramienta valiosa para una variedad de aplicaciones, como sistemas de recomendación y reconocimiento de imágenes. A través de este laboratorio, obtendremos una comprensión más profunda de cómo funcionan los algoritmos de aprendizaje automático y cómo se pueden implementar en escenarios del mundo real.
Algoritmo de K Vecinos más Cercanos
Para utilizar el Algoritmo de K Vecinos más Cercanos, siga estos pasos:
- Abra la Terminal/SSH y escriba
node. - Clasifique un punto de datos con respecto a un conjunto de datos etiquetados utilizando el algoritmo de k vecinos más cercanos.
- Asocie los
datosa objetos utilizandoArray.prototype.map(). Cada objeto contiene la distancia euclidiana del elemento desdepunto, calculada utilizandoMath.hypot(),Object.keys()y suetiqueta. - Utilice
Array.prototype.sort()yArray.prototype.slice()para obtener loskvecinos más cercanos depunto. - Utilice
Array.prototype.reduce()en combinación conObject.keys()yArray.prototype.indexOf()para encontrar laetiquetamás frecuente entre ellos.
A continuación, se muestra un código de ejemplo que implementa el Algoritmo de K Vecinos más Cercanos:
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;
};
A continuación, se muestra cómo utilizar el código:
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
Resumen
¡Felicitaciones! Has completado el laboratorio de K Vecinos más Cercanos. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.