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:
Ogni fold adatta di nuovo l’intera pipeline, incluso l’imputatore, così nessun fold sbircia le righe su cui viene testato.
Sfida
MedioUna 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.
- Correggi le due chiavi della griglia affinché la ricerca ottimizzi la strategia dell’imputatore e il numero di vicini di k-NN.
- 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.820Provalo 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
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Apprendimento supervisionato
1Il tuo primo modello
Imparare dagli esempiInsiemi di addestramento e testAdattare e prevedereValutare un modelloRiepilogo: Ordinatore di semi4Regressione logistica
Previsioni sì o noLa soglia decisionaleI pesi come evidenzePiù classiRiepilogo: filtro antispam7Sovraadattamento
Sottoadattamento e sovraadattamentoCurve di apprendimentoRegolarizzazioneSet di validazioneRiepilogo: ottimizzare un albero10Pipeline
PipelineColonne misteImputazione in una pipelineOttimizzazione di una pipelineRiepilogo: pulire e fare previsioni2Vicini più prossimi
Come decide k-NNScegliere kConfini decisionaliNormalizzare le scale per i viciniRiepilogo: vicini del vino5Misurare i classificatori
La matrice di confusionePrecisione e richiamoIl punteggio F1Classi sbilanciateCurve ROCRiepilogo: test di screening8Convalida incrociata
Validazione K-foldConfronto equo tra modelliRicerca a grigliaRiepilogo: riparazioni di skateboard11Progetto: specie di pinguini
Incontra i pinguiniPrepara i datiScegli un modelloOttimizza il miglioreDistribuisci il modello3Regressione lineare
Prevedere numeriPiù caratteristicheMisurare gli erroriGrafici dei residuiRiepilogo: noleggio di biciclette6Alberi decisionali
Gli alberi fanno domandeLeggere un alberoProfondità dell’alberoImportanza delle caratteristicheRiepilogo: decisioni sui prestitiEsercitati da solo: Compilatore Python online