Menu
CoddyTech

Ottimizzazione di una pipeline

Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 48 di 58.

Una pipeline può essere ottimizzata come qualsiasi modello, inclusi i passaggi di pulizia. Ogni impostazione è denominata in base al suo passaggio, seguito da due trattini bassi e poi dal parametro:

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 assegna a ogni passaggio il nome della propria classe, in minuscolo. Per 200 lanci di razzi modello, che raggiungano o meno i 300 m, i 12 parametri ottengono i seguenti punteggi:

Una griglia delle accuratezze medie CV: righe per le sostituzioni con la media, la mediana e il valore più frequente, colonne per le profondità dell'albero 2, 4, 6 e 8. I punteggi vanno da 0.733 a 0.820, e la cella per le sostituzioni con la mediana alla profondità 6 è contrassegnata come la migliore con 0.820

Ogni fold adatta di nuovo l’intera pipeline, incluso l’imputatore, così nessun fold sbircia le righe su cui viene testato.

challenge icon

Sfida

Medio

Una scuola di musica vuole sapere quali studenti di violino supereranno l’esame di grado. Il codice iniziale legge tre valori di k e la ricerca a griglia su una pipeline si interrompe con un errore.

  1. Correggi le due chiavi della griglia affinché la ricerca ottimizzi la strategia dell’imputatore e il numero di vicini di k-NN.
  2. Stampa le impostazioni migliori, la loro accuratezza con convalida incrociata e l’accuratezza sul test, come sotto.

Un’altra scuola, con 2, 4, 6:

Best: mean fills, 6 neighbors
Cross-validated accuracy: 0.720
Test accuracy: 0.820

Provalo tu

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

# Studenti di violino: hanno superato l'esame di livello (1) oppure no (0); mancano alcuni registri delle esercitazioni
# e punteggi di lettura a prima 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())]

# Questa ricerca si interrompe con un errore: correggi la griglia
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)

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento supervisionato

Esercitati da solo: Compilatore Python online