Ajuste de una canalización
Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 48 de 58.
Se puede ajustar una canalización como cualquier modelo, incluidos los pasos de limpieza. Cada ajuste se nombra según su paso, dos guiones bajos y después el parámetro:
pipe = make_pipeline(SimpleImputer(), DecisionTreeClassifier(random_state=0))
grid = {"simpleimputer__strategy": ["mean", "median", "most_frequent"],
"decisiontreeclassifier__max_depth": [2, 4, 6, 8]}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)make_pipeline nombra cada paso según su clase, en minúsculas. Para 200 lanzamientos de cohetes modelo, alcanzaran o no los 300 m, estas son las puntuaciones de las 12 configuraciones:
Cada partición vuelve a ajustar toda la canalización, incluido el imputador, para que ninguna partición consulte las filas con las que se evalúa.
Desafío
IntermedioUna escuela de música quiere saber qué estudiantes de violín aprobarán el examen de grado. El código inicial lee tres valores de k, y su búsqueda en cuadrícula sobre una canalización se detiene con un error.
- Corrige las dos claves de la cuadrícula para que la búsqueda ajuste la estrategia del imputador y los vecinos de k-NN.
- Imprime los mejores ajustes, su precisión validada de forma cruzada y la precisión de prueba, como se muestra a continuación.
Otra escuela, con 2, 4, 6:
Best: mean fills, 6 neighbors
Cross-validated accuracy: 0.720
Test accuracy: 0.820Pruébalo tú mismo
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
# Estudiantes de violín: aprobaron su examen de grado (1) o no (0); faltan algunos registros de
# práctica y puntuaciones de lectura a primera vista
students = pd.read_csv("violins.csv")
X = students.drop(columns="passed")
y = students["passed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = [int(input()), int(input()), int(input())]
# Esta búsqueda se detiene con un error: corrige la cuadrícula
pipe = make_pipeline(SimpleImputer(), StandardScaler(), KNeighborsClassifier())
grid = {
"strategy": ["mean", "median"],
"n_neighbors": ks,
}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)
# 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 spam7Sobreajuste
Subajuste y sobreajusteCurvas de aprendizajeRegularizaciónConjuntos de validaciónRepaso: Ajustar un árbol10Canalizaciones
CanalizacionesColumnas mixtasImputación en una canalizaciónAjuste de una canalizaciónRepaso: limpiar y predecir2Vecinos 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