KNeighborsClassifier
Al construir un estimador final para una pipeline, utilizamos el modelo KNeighborsClassifier
. Este capítulo explicará brevemente cómo funciona.
k-Vecinos más Cercanos
k-vecinos más cercanos es un algoritmo de aprendizaje automático basado en encontrar las instancias más similares en el conjunto de entrenamiento para realizar una predicción.
KNeighborsClassifier
es una implementación en scikit-learn de este algoritmo para tareas de clasificación. Así es como realiza una predicción:
- Para una nueva instancia, encuentra las k instancias más cercanas (basadas en las características) del conjunto de entrenamiento. Esas k instancias se denominan vecinos;
- Encuentra la clase más frecuente entre los k vecinos. Esa clase será la predicción para la nueva instancia.
k es el número de vecinos que se desea considerar. Es necesario especificar este número al inicializar el modelo. Por defecto, k está establecido en 5.
Con diferentes valores de k, el modelo produce diferentes predicciones. Esto se conoce como un hiperparámetro: un parámetro que se debe especificar de antemano y que puede cambiar las predicciones del modelo.
Se pueden probar diferentes valores de k y encontrar el óptimo para la tarea. Este proceso de ajuste de hiperparámetros se conoce como ajuste de hiperparámetros, y puede ayudar a optimizar el rendimiento del modelo.
KNeighborsClassifier durante .fit()
A diferencia de la mayoría de los modelos de aprendizaje automático, KNeighborsClassifier
no hace nada más que almacenar el conjunto de entrenamiento durante el entrenamiento. Pero aunque el entrenamiento no requiere tiempo, llamar a .fit(X, y)
es obligatorio para que recuerde el conjunto de entrenamiento.
KNeighborsClassifier durante .predict()
Durante la predicción, el KNeighborsClassifier
busca de manera voraz los k vecinos más cercanos para cada nueva instancia.
Ejemplo de codificación de KNeighborsClassifier
Creación de un KNeighborsClassifier
, entrenamiento y obtención de su precisión utilizando el método .score()
. Para simplificar, los datos en el archivo .csv ya están completamente preprocesados.
Para especificar el valor de k, se utiliza el argumento n_neighbors
del constructor de KNeighborsClassifier
. Se probarán los valores 5 (valor predeterminado) y 1.
12345678910111213import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
¡Logramos una precisión bastante buena! Con un vecino más cercano (1-nearest neighbor), la precisión incluso es perfecta.
Sin embargo, ¿debemos confiar en estos puntajes? No, porque evaluamos el modelo en el conjunto de entrenamiento—los mismos datos con los que fue entrenado. Naturalmente, predecirá bien las instancias que ya ha visto.
Para comprender realmente qué tan bien funciona el modelo, debemos evaluarlo en instancias que el modelo nunca haya visto antes.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 3.13
KNeighborsClassifier
Desliza para mostrar el menú
Al construir un estimador final para una pipeline, utilizamos el modelo KNeighborsClassifier
. Este capítulo explicará brevemente cómo funciona.
k-Vecinos más Cercanos
k-vecinos más cercanos es un algoritmo de aprendizaje automático basado en encontrar las instancias más similares en el conjunto de entrenamiento para realizar una predicción.
KNeighborsClassifier
es una implementación en scikit-learn de este algoritmo para tareas de clasificación. Así es como realiza una predicción:
- Para una nueva instancia, encuentra las k instancias más cercanas (basadas en las características) del conjunto de entrenamiento. Esas k instancias se denominan vecinos;
- Encuentra la clase más frecuente entre los k vecinos. Esa clase será la predicción para la nueva instancia.
k es el número de vecinos que se desea considerar. Es necesario especificar este número al inicializar el modelo. Por defecto, k está establecido en 5.
Con diferentes valores de k, el modelo produce diferentes predicciones. Esto se conoce como un hiperparámetro: un parámetro que se debe especificar de antemano y que puede cambiar las predicciones del modelo.
Se pueden probar diferentes valores de k y encontrar el óptimo para la tarea. Este proceso de ajuste de hiperparámetros se conoce como ajuste de hiperparámetros, y puede ayudar a optimizar el rendimiento del modelo.
KNeighborsClassifier durante .fit()
A diferencia de la mayoría de los modelos de aprendizaje automático, KNeighborsClassifier
no hace nada más que almacenar el conjunto de entrenamiento durante el entrenamiento. Pero aunque el entrenamiento no requiere tiempo, llamar a .fit(X, y)
es obligatorio para que recuerde el conjunto de entrenamiento.
KNeighborsClassifier durante .predict()
Durante la predicción, el KNeighborsClassifier
busca de manera voraz los k vecinos más cercanos para cada nueva instancia.
Ejemplo de codificación de KNeighborsClassifier
Creación de un KNeighborsClassifier
, entrenamiento y obtención de su precisión utilizando el método .score()
. Para simplificar, los datos en el archivo .csv ya están completamente preprocesados.
Para especificar el valor de k, se utiliza el argumento n_neighbors
del constructor de KNeighborsClassifier
. Se probarán los valores 5 (valor predeterminado) y 1.
12345678910111213import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
¡Logramos una precisión bastante buena! Con un vecino más cercano (1-nearest neighbor), la precisión incluso es perfecta.
Sin embargo, ¿debemos confiar en estos puntajes? No, porque evaluamos el modelo en el conjunto de entrenamiento—los mismos datos con los que fue entrenado. Naturalmente, predecirá bien las instancias que ya ha visto.
Para comprender realmente qué tan bien funciona el modelo, debemos evaluarlo en instancias que el modelo nunca haya visto antes.
¡Gracias por tus comentarios!