Ricerca a griglia
Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 39 di 58.
La regolazione manuale significa annidare cicli. GridSearchCV convalida ogni combinazione di impostazioni e conserva la migliore. Per 300 corse del tram, in ritardo o in orario:
Un dizionario associa ogni impostazione ai valori da provare. min_samples_leaf è il numero minimo di righe che una foglia può contenere:
from sklearn.model_selection import GridSearchCV
grid = {"max_depth": [2, 4, 6], "min_samples_leaf": [1, 5, 20]}
search = GridSearchCV(DecisionTreeClassifier(random_state=0), grid, cv=5)
search.fit(X_train, y_train)
print(search.best_params_)
print(f"{search.best_score_:.3f}")
print(f"{search.score(X_test, y_test):.3f}")Questo stampa:
{'max_depth': 4, 'min_samples_leaf': 5}
0.876
0.813La ricerca riadatta il vincitore su tutte le righe di addestramento, quindi search.score lo verifica una volta. Mantieni piccole le griglie: ogni cella richiede 5 adattamenti.
Sfida
MedioUn team che lavora con i satelliti etichetta i pixel come nuvole o cielo sereno usando k-NN. Il programma legge il valore massimo di k da provare; il codice iniziale suddivide i dati.
- Esegui una ricerca a griglia per ogni k dispari da 1 fino a quel numero, con
weights"uniform"o"distance"(i vicini più vicini contano di più),cv=5. - Stampa le impostazioni migliori, la loro accuratezza convalidata incrociata e l'accuratezza sul test, con 3 decimali.
Per gli altri pixel e 7:
Best k: 7, weights: distance
Cross-validated accuracy: 0.885
Test accuracy: 0.800Provalo tu
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
max_k = int(input())
# Non modificare le righe qui sotto: 360 pixel satellitari, ciascuno con 4 letture della luce; l'etichetta 1 indica una nuvola
X, y = make_classification(n_samples=360, n_features=4, n_informative=3, n_redundant=0,
flip_y=0.08, class_sep=0.7, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# 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 antispam2Vicini 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