KNeighborsClassifier
Al crear el estimador final en una tubería, el modelo elegido fue KNeighborsClassifier
. Este capítulo proporciona una breve explicación de cómo funciona el algoritmo.
El funcionamiento de los modelos no es un tema principal de este curso, por lo que está bien si algo no te queda claro. Se explica con más detalle en otros cursos como Linear Regression with Python o Classification with Python.
k-Vecinos más Cercanos
k-vecinos más cercanos (k-NN) es un algoritmo de aprendizaje automático que predice resultados identificando las instancias más similares en el conjunto de entrenamiento.
KNeighborsClassifier
es la implementación de Scikit-learn de este algoritmo para tareas de clasificación. El proceso de predicción funciona de la siguiente manera:
- Para una nueva instancia, identifica las k instancias de entrenamiento más cercanas según la similitud de características. Estas se denominan vecinos.
- Determina la clase más frecuente entre los k vecinos. Esa clase se convierte en la predicción para la nueva instancia.
El parámetro k especifica el número de vecinos a considerar. Por defecto, está establecido en 5. Diferentes valores de k pueden llevar a diferentes predicciones, lo que lo convierte en un hiperparámetro — un parámetro elegido antes del entrenamiento que afecta directamente el comportamiento del modelo.
Experimentar con diferentes valores de k y seleccionar el que proporcione el mejor rendimiento se denomina ajuste de hiperparámetros. Este proceso es esencial para optimizar el modelo.
KNeighborsClassifier durante .fit()
A diferencia de la mayoría de los modelos de ML, el KNeighborsClassifier
no hace nada más que almacenar el conjunto de entrenamiento durante el entrenamiento. Sin embargo, 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.
En los gifs anteriores, solo se utilizan dos características, 'body_mass_g'
y 'culmen_depth_mm'
, porque visualizar gráficos de mayor dimensión es complicado. Incluir características adicionales probablemente ayudará al modelo a separar mejor los puntos de datos verdes y rojos, permitiendo que el KNeighborsClassifier
realice predicciones más precisas.
Ejemplo de codificación con KNeighborsClassifier
Cree un KNeighborsClassifier
, entrénelo y evalúe su precisión utilizando el método .score()
. El conjunto de datos en el archivo .csv
ya está preprocesado.
El número de vecinos (k) se especifica con el argumento n_neighbors
al inicializar KNeighborsClassifier
. Pruebe tanto el valor predeterminado 5 como 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))
Los resultados muestran una alta precisión, incluso perfecta con 1 vecino más cercano.
Sin embargo, estos puntajes no son confiables porque la evaluación se realizó en el conjunto de entrenamiento, es decir, los mismos datos con los que se entrenó el modelo. En este caso, el modelo simplemente predice instancias que ya ha visto.
Para evaluar correctamente el rendimiento, el modelo debe ser evaluado con datos que no haya visto previamente.
¡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 crear el estimador final en una tubería, el modelo elegido fue KNeighborsClassifier
. Este capítulo proporciona una breve explicación de cómo funciona el algoritmo.
El funcionamiento de los modelos no es un tema principal de este curso, por lo que está bien si algo no te queda claro. Se explica con más detalle en otros cursos como Linear Regression with Python o Classification with Python.
k-Vecinos más Cercanos
k-vecinos más cercanos (k-NN) es un algoritmo de aprendizaje automático que predice resultados identificando las instancias más similares en el conjunto de entrenamiento.
KNeighborsClassifier
es la implementación de Scikit-learn de este algoritmo para tareas de clasificación. El proceso de predicción funciona de la siguiente manera:
- Para una nueva instancia, identifica las k instancias de entrenamiento más cercanas según la similitud de características. Estas se denominan vecinos.
- Determina la clase más frecuente entre los k vecinos. Esa clase se convierte en la predicción para la nueva instancia.
El parámetro k especifica el número de vecinos a considerar. Por defecto, está establecido en 5. Diferentes valores de k pueden llevar a diferentes predicciones, lo que lo convierte en un hiperparámetro — un parámetro elegido antes del entrenamiento que afecta directamente el comportamiento del modelo.
Experimentar con diferentes valores de k y seleccionar el que proporcione el mejor rendimiento se denomina ajuste de hiperparámetros. Este proceso es esencial para optimizar el modelo.
KNeighborsClassifier durante .fit()
A diferencia de la mayoría de los modelos de ML, el KNeighborsClassifier
no hace nada más que almacenar el conjunto de entrenamiento durante el entrenamiento. Sin embargo, 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.
En los gifs anteriores, solo se utilizan dos características, 'body_mass_g'
y 'culmen_depth_mm'
, porque visualizar gráficos de mayor dimensión es complicado. Incluir características adicionales probablemente ayudará al modelo a separar mejor los puntos de datos verdes y rojos, permitiendo que el KNeighborsClassifier
realice predicciones más precisas.
Ejemplo de codificación con KNeighborsClassifier
Cree un KNeighborsClassifier
, entrénelo y evalúe su precisión utilizando el método .score()
. El conjunto de datos en el archivo .csv
ya está preprocesado.
El número de vecinos (k) se especifica con el argumento n_neighbors
al inicializar KNeighborsClassifier
. Pruebe tanto el valor predeterminado 5 como 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))
Los resultados muestran una alta precisión, incluso perfecta con 1 vecino más cercano.
Sin embargo, estos puntajes no son confiables porque la evaluación se realizó en el conjunto de entrenamiento, es decir, los mismos datos con los que se entrenó el modelo. En este caso, el modelo simplemente predice instancias que ya ha visto.
Para evaluar correctamente el rendimiento, el modelo debe ser evaluado con datos que no haya visto previamente.
¡Gracias por tus comentarios!