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 queda claro. Se explica con más detalle en otros cursos como Linear Regression with Python o Classification with Python.
k-Nearest Neighbors
k-NN predice la clase de una nueva instancia observando sus k muestras de entrenamiento más similares.
KNeighborsClassifier implementa esto en Scikit-learn.
- Para un nuevo punto, encuentra los k vecinos más cercanos usando la similitud de características.
- La clase más común entre ellos se convierte en la predicción.
k es un hiperparámetro (valor predeterminado = 5). Diferentes valores cambian el comportamiento del modelo, por lo que ajustar k es importante.
KNeighborsClassifier durante .fit()
A diferencia de muchos algoritmos, KNeighborsClassifier simplemente almacena los datos de entrenamiento.
Aun así, es necesario llamar a .fit(X, y) para que el modelo sepa a qué conjunto de datos hacer referencia durante la predicción.
KNeighborsClassifier durante .predict()
Durante la predicción, el clasificador busca los k vecinos más cercanos de cada instancia. En el ejemplo visual, solo se muestran dos características; agregar más características generalmente mejora la separación de clases y la precisión de la predicción.
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 de KNeighborsClassifier
Es posible crear un clasificador, entrenarlo y comprobar su precisión utilizando .score().
El argumento n_neighbors controla k—prueba tanto con 5 como con 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))
Usar k=1 puede producir una precisión perfecta, pero esto es engañoso porque la evaluación se realizó en el conjunto de entrenamiento.
Para medir el rendimiento real, siempre se debe probar el modelo con datos no vistos.
¡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