K Vecinos más Cercanos con Scikit Learn

K Vecinos más Cercanos, KNN por sus siglas en inglés, es un algoritmo de aprendizaje de máquina muy simple, fácil de entender, versátil y uno de los más altos. KNN se utiliza en una gran variedad de aplicaciones como finanzas, salud, ciencias políticas, detección de escritura a mano, reconocimiento de imágenes y reconocimiento de vídeo.

Por su parte, Scikit Learn es una de las más grandes librerías de Machine Learning con la que cuenta Python, razón por la cual veremos cómo se puede usar esta librería para implementar este algoritmo.

Para conocer más la parte teórica de este algoritmo puedes ingresar a este link en donde explicó más al respecto.

La librería Scikit Learn cuenta con un modelo que se puede utilizar para implementar el algoritmo de K vecinos más cercanos clasificación. Para implementar este algoritmo lo primero que se debe realidad es definir el modulo, en este caso sería: skelearn.neigbors. Realizado esto se procede a importar la clase en este caso será KNeighborsClassifier. Recuerda que este algoritmo también se puede usar para problemas de regresión, pero la clase para este se define distinto al de clasificación.

KNNScikit1

La librería te ofrece varios parámetros que puedes utilizar para configurar el algoritmo y algunos de ellos son muy útiles para mejorar el modelo que se este construyendo.

El primer parámetro, por su puesto debe ser el del número de vecinos o K, acá es donde defines este valor, a este parámetro se le conoce acá como n_neighbors. Por defecto es 5, pero es recomendable que en cada proyecto sea el desarrollador quien defina este valor para tener más control sobre el modelo.

KNNScikit3

Otro parámetro importante y que lo mencionamos cuando vimos la teoría de este algoritmo es definir la distancia que se utilizará para verificar los vecinos del dato que se está buscando predecir. Para configurar esto en el algoritmo se debe definir dos variables dentro del algoritmo, la primera es “p” y la segunda es “metric”.

KNNScikit4

“p” por defecto es igual a 2 y “metric” por defecto es “minkowski”, con esta combinación se está eligiendo la distancia euclidiana como la que se implementará.

En el caso de querer utilizar la distancia manhattan se deberá colocar “p” igual 1. Y en caso de que se quiera utilizar la distancia minkowski, se deberá colocar un valor arbitrario a “p”

Con estos parametros puedes desarrollar un buen modelo utilizando el algoritmo de K  vecinos más cercano clasificación. Este algoritmo cuenta con otros parametros que pueden ser modificados pero a medida que ganes más experiencia en el desarrollo de proyectos de Machine Learning podrás implementarlos en tus proyectos.

Puedes ver los otros parámetros en la página oficial de la librería.

Ahora los comandos para entrenar el algoritmo y realizar una predicción son los mismos que con el resto de algoritmos de Machine Learning, fit() y predict (), respectivamente. Para implementar estas instrucciones deberás definir los parámentros de “x” y “y”.

KNNScikit2

Ahora bien, después de realizar todo este procedimiento solamente falta evaluar el rendimiento del modelo construido, este paso es particularmente importante para comparar qué tan bien funcionan diferentes algoritmos en un conjunto de datos particular. Se puede utilizar la instrucción “score” junto con los datos de pruebas, pero aconsejo mejor utilizar todos los datos de métricas que se explicaron anteriormente para obtener una mejor información del modelo.

En resumen, los comandos a utilizar para implementar un algoritmo de K vecinos más cercanos clasificación serían los siguientes:

KNNScikit5

1 thought on “K Vecinos más Cercanos con Scikit Learn”

  1. hola Ligdi, muchas gracias por tu trabajo, es por demás de bueno.
    te hago una consulta: con este código realicé el entrenamiento del kmeans
    kmeans=KMeans(n_clusters=5)
    kmeans=kmeans.fit(X)
    labels=kmeans.predict(X)
    centroids=kmeans.cluster_centers_
    ¿en qué parte debo agregar el argumento para especificar si deseo utilizar la distancia euclídea, la de manhattan, etc, etc?
    te molesto con este tema porque realmente no encuentro nada al respecto, lo poco que pude ver en realidad lo hacen con otros algoritmos o de forma distinta, quisiera saber si a ese código que te pasé arriba se le puede indicar el tipo de medida a implementar.
    saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *