FIA – 4BM1
ESCOM – IPN
PRÁCTICA 7: K-NN
Introducción
El algoritmo de las K vecinas más
cercanas o K-nearest neighbors (kNN)
es un algoritmo de Machine Learning
que pertenece a los algoritmos de
aprendizaje supervisado simples y
fáciles de aplicar que pueden ser utilizados para resolver problemas de
clasificación y de regresión.
Es un algoritmo no paramétrico. No paramétrico significa que el algoritmo no
hace suposiciones sobre la distribución de probabilidad de los datos de la
muestra.
El algoritmo k-nn toma su nombre del hecho de que usa información sobre los
k vecinos más cercanos de un ejemplo para clasificar ejemplos no etiquetados.
La letra k es un término variable que implica que se podría usar cualquier
número de vecinos más cercanos.
Si bien se puede usar para problemas de regresión o clasificación,
generalmente se usa como un algoritmo de clasificación, partiendo de la
suposición de que se pueden encontrar puntos similares cerca uno del otro.
Al igual que cualquier algoritmo de machine learning, k-NN tiene sus puntos
fuertes y débiles. Dependiendo del proyecto y la aplicación, puede o no ser la
elección correcta.
1
FIA – 4BM1
ESCOM – IPN
La lógica detrás del algoritmo de las K vecinas más cercanas es una de las más
sencillas de todos los algoritmos de Machine Learning supervisados:
Etapa 1: Seleccionar el número de K vecinas
Etapa 2: Calcular la distancia Desde un punto no clasificado a otros
puntos:
Etapa 3: tomar las K vecinas más cercanas según la distancia calculada
Etapa 4: entre las K vecinas, contar el número de puntos en cada
categoría.
Etapa 5: atribuir un nuevo punto a la categoría más presente entre las K
vecinas
Etapa 6: El modelo está listo.
2
FIA – 4BM1
ESCOM – IPN
Tipos de distancia
Distancia Euclidiana
Distancia Manhattan
Distancia Minkowski
Ventajas:
El algoritmo es simple y fácil de aplicar.
No es necesario crear un modelo, configurar varios parámetros o
formular hipótesis suplementarias.
El algoritmo es polivalente. Puede ser utilizado para la clasificación o la
regresión.
No hace ninguna suposición sobre la distribución de los datos.
La fase de entrenamiento es rápida.
3
FIA – 4BM1
ESCOM – IPN
Desventajas:
El algoritmo se vuelve más lento a medida que el número de
observaciones aumenta y las variables independientes aumentan.
Requiere la selección de un k apropiado
Variables cualitativas y missing data requieren un procesamiento
adicional.
Propenso al sobreajuste
Desarrollo
Primero vamos a importar las librerías numpy (cálculos númericos),
[Link] (crear la gráfica), pandas (para abrir el archivo csv y
manipular los datos) y [Link] (algoritmo KNN).
Luego, se abre el archivo .csv (comma separated values) y especificamos cuáles
son los datos junto con sus etiquetas
4
FIA – 4BM1
ESCOM – IPN
Las siguientes líneas de código son para crear y visualizar la gráfica de
dispersión. También se especifican las características (Estatura y Peso) y las
etiquetas (Clase, que incluye a “Hombre” y a “Mujer”).
Ahora, se calcula el valor de k. En este caso, se calcula como la raíz cuadrada
del número de muestras en los datos. Se procura que k sea impar para evitar
empates.
Crea una instancia del clasificador KNeighborsClassifier con el valor de k y lo
ajusta a los datos de entrenamiento (X e y) utilizando el método fit
Aquí vamos a definir distintos colores para las 10 pruebas que vamos a realizar.
5
FIA – 4BM1
ESCOM – IPN
Se crea un ciclo for para poder realizar las 10 pruebas. Se recopilan 10 datos
de estatura y peso, después se crea un DataFrame. Después se realiza la
predicción utilizando el clasificador KNN entrenado. Finalmente se muestran la
predicción en consola
Finalmente, mostramos la gráfica de dispersión.
6
FIA – 4BM1
ESCOM – IPN
Demostración de Resultados
Ilustración 1. Los 40 datos para entrenar al algoritmo
7
FIA – 4BM1
ESCOM – IPN
Ilustración 2. Los 10 datos de prueba
8
FIA – 4BM1
ESCOM – IPN
9
FIA – 4BM1
ESCOM – IPN
Ilustración 3-7. Ingresando los 10 datos de prueba. Para cada una se realiza la predicción.
Ilustración 8. Gráfica de dispersión, cada muestra está numerada y tienen distintos colores para
distinguirlas.
10
FIA – 4BM1
ESCOM – IPN
Discusión de Resultados
La falta de datos suficientes afecta la precisión del algoritmo de clasificación. Al tener
pocos datos, el algoritmo no puede aprender correctamente y, como resultado,
clasifica erróneamente algunas clases. En este caso, el algoritmo clasificó
correctamente 7 clases y falló en otras 3 (prueba 1, prueba 5 y prueba 8), lo que
significa que tiene una eficiencia del 70%. Con más datos y un entrenamiento adecuado,
el algoritmo podría mejorar su precisión.
Conclusiones
Al tratarse de uno de los algoritmos más simples de Machine Learning, es muy
implementado por los desarrolladores de sistemas basados en el aprendizaje,
intuitivos e inteligentes que pueden efectuar y tomar pequeñas decisiones solos.
El algoritmo K-NN tiene múltiples aplicaciones, principalmente dentro de la
clasificación, como el preprocesamiento de datos, los motores de recomendación,
finanzas, cuidado de la salud y reconocimiento de patrones.
Para efectos de esta práctica, fue necesario recabar 50 datos de varias personas
(estatura, peso y género). De esos 50, íbamos a usar 40 datos para entrenar al
algoritmo K-NN y los 10 datos restantes servirían para hacer las pruebas.
Respecto al código que se nos proporcionó, solamente fue necesario agregarle un ciclo
for para poder recabar 10 muestras (en lugar de 1, como era originalmente) y le
agregamos unas cuantas líneas de código para distinguir cada una de las muestras de
prueba (con colores).
Esto hace que sea aún más práctico para el aprendizaje y el desarrollo y puede servir
para toda industria que utilice sistemas, soluciones o servicios inteligentes.
11
FIA – 4BM1
ESCOM – IPN
Referencias
DataScientest. (2022, 28 diciembre). ¿Qué es el algoritmo KNN? Recuperado 1
de junio de 2023, de [Link]
Díaz, R. (s. f.). Algoritmo KNN – cómo funciona y ejemplos en Python. The
Machine Learners. Recuperado 1 de junio de 2023, de
[Link]
El algoritmo K-NN y su importancia en el modelado de datos. (2020, 1
septiembre). Merkle. Recuperado 1 de junio de 2023, de
[Link]
Gómez Servan, W. J. (2022, 5 febrero). K-Vecinos mas cercanos(KNN). RPubs.
Recuperado 1 de junio de 2023, de
[Link]
IBM. (s. f.). ¿Qué es KNN? Recuperado 1 de junio de 2023, de
[Link]
Na8. (2018, 10 julio). Clasificar con K-Nearest-Neighbor ejemplo en Python.
Aprende Machine Learning. Recuperado 1 de junio de 2023, de
[Link]
neighbor-ejemplo-en-python/
12