Escalado para los vecinos
Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 9 de 58.
k-NN mide la distancia, así que una característica con valores grandes eclipsa al resto, como se advirtió en la sección 2. Aquí, la distancia al río, en metros, eclipsa la elevación:
Escala primero. Ajusta el escalador solo con las filas de entrenamiento y, después, transforma ambos conjuntos:
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)
X_test_s = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_s, y_train)
print(model.score(X_test_s, y_test))Esto imprime 0.925, frente a 0.6. Las filas de prueba siguen sin verse: el escalador no aprende nada de ellas.
Desafío
FácilUn medidor inteligente adivina qué aparato está en funcionamiento a partir de su potencia (vatios) y tiempo de funcionamiento (minutos), en meter.csv. El código inicial lee k e imprime la precisión de k-NN con las características sin escalar.
- Ajusta un
StandardScalercon las filas de entrenamiento y transforma ambos conjuntos. - Ajusta un modelo k-NN con el mismo valor de k usando las filas escaladas; imprime su precisión con 3 decimales.
- Imprime la mejora.
Para otra casa y k = 5:
Unscaled accuracy: 0.65
Scaled accuracy: 0.875
Scaling gains 0.225Pruébalo tú mismo
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
# Una fila por cada uso de un electrodoméstico: potencia en vatios, tiempo de funcionamiento en minutos y qué electrodoméstico es
meter = pd.read_csv("meter.csv")
X = meter[["watts", "minutes"]]
y = meter["appliance"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
k = int(input())
# k-NN con las características sin procesar
raw_model = KNeighborsClassifier(n_neighbors=k)
raw_model.fit(X_train, y_train)
raw = raw_model.score(X_test, y_test)
print(f"Unscaled accuracy: {round(raw, 3)}")
# 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