Cómo elegir k
Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 7 de 58.
¿Qué valor de k es adecuado para los chiles? Prueba varios y evalúa cada modelo dos veces: en las filas que estudió, la precisión de entrenamiento, y en las filas ocultas, la precisión de prueba.
Con k = 1, cada chile es su propio vecino más cercano, así que el modelo memoriza: es perfecto con sus filas y peor con las nuevas. Un valor enorme de k difumina los grupos.
ks = range(1, 120, 6)
train_acc = []
test_acc = []
for k in ks:
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
train_acc.append(model.score(X_train, y_train))
test_acc.append(model.score(X_test, y_test))Elige el valor de k donde la precisión de prueba alcanza su máximo, por ahora: el capítulo 7 muestra un juez más imparcial.
Desafío
FácilUn club de fútbol registra los tiros en shots.csv: distancia, ángulo y goal o miss. ¿Qué valor de k predice mejor? El código inicial los divide, enumera los ks y etiqueta el gráfico.
- Para cada valor de k, ajusta un modelo y guarda su precisión en entrenamiento y en prueba.
- Imprime el mejor valor de k según la precisión en prueba, como se muestra abajo.
- Representa ambas listas frente a
ks, con las etiquetastrainytest, y una leyenda.
Para otro club:
Best k: 9 (test accuracy 0.783)Después, Coddy describe tu gráfico.
Pruébalo tú mismo
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# Una fila por tiro: distancia a la portería (m), ángulo respecto a la boca de la portería (grados), gol o fallo
shots = pd.read_csv("shots.csv")
X = shots[["distance_m", "angle_deg"]]
y = shots["result"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = range(1, 42, 4) # k = 1, 5, 9, ..., 41
fig, ax = plt.subplots()
ax.set_title("Shots: Accuracy by k")
ax.set_xlabel("k (neighbors)")
ax.set_ylabel("Accuracy")
# Escribe tu código a continuación
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje supervisado
1Tu primer modelo
Aprender de ejemplosConjuntos de entrenamiento y pruebaAjustar y predecirEvaluar un modeloRepaso: clasificador de semillas4Regresión logística
Predicciones de sí o noEl umbral de decisiónLos pesos como evidenciaVarias clasesRepaso: filtro de spam2Vecinos más cercanos
Cómo decide k-NNCómo elegir kFronteras de decisiónEscalado para los vecinosRepaso: vecinos del vino5Medición de clasificadores
La matriz de confusiónPrecisión y exhaustividadLa puntuación F1Clases desequilibradasCurvas ROCRepaso: prueba de detección8Validación cruzada
Validación K-FoldComparación justa de modelosBúsqueda en cuadrículaRepaso: reparaciones de monopatines11Proyecto: especies de pingüinos
Conoce a los pingüinosPrepara los datosElige un modeloAjusta el modelo ganadorPublica el modelo3Regresión lineal
Predicción de númerosVarias característicasMedición de erroresGráficos de residuosRepaso: alquiler de bicicletas6Árboles de decisión
Los árboles hacen preguntasLeer un árbolProfundidad del árbolImportancia de las característicasRepaso: decisiones de préstamosPractica por tu cuenta: Compilador de Python online