Menu
CoddyTech

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:

Una cuadrícula de exactitudes CV medias: filas para los valores de relleno mean, median y most_frequent; columnas para las profundidades del árbol 2, 4, 6 y 8. Las puntuaciones van de 0.733 a 0.820, y la celda para los valores de relleno median con profundidad 6 está marcada como la mejor, con 0.820

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.

challenge icon

Desafío

Intermedio

Una 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.

  1. Corrige las dos claves de la cuadrícula para que la búsqueda ajuste la estrategia del imputador y los vecinos de k-NN.
  2. 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.820

Prué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
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Aprendizaje supervisado

Practica por tu cuenta: Compilador de Python online