Profondità dell’albero
Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 29 di 58.
Un albero può continuare a fare domande finché ogni riga di addestramento non ha la propria risposta. A quel punto ha memorizzato, non imparato:
Gli alberi profondi imparano il rumore delle proprie righe di addestramento, quindi l’accuratezza sul test raggiunge un picco e poi diminuisce. Prova diverse profondità:
train = []
test = []
for d in range(1, 13):
tree = DecisionTreeClassifier(max_depth=d, random_state=0)
tree.fit(X_train, y_train)
train.append(tree.score(X_train, y_train))
test.append(tree.score(X_test, y_test))Su queste lune, la profondità 6 dà i risultati migliori sulle nuove righe: per ora, mantienila. Dalla profondità 8, l’albero è perfetto sulle righe memorizzate, ma peggiore sulle altre.
Sfida
MedioUn rilevamento telescopico suddivide gli oggetti celesti in stelle e galassie. Il codice iniziale li suddivide e prepara il grafico.
- Per ogni profondità in
depths, addestra un albero (random_state=0) e conserva entrambe le accuratezze. - Stampa la profondità con la migliore accuratezza di test, come qui sotto.
- Traccia entrambe le linee, etichettate
trainetest, indica la profondità migliore con una linea tratteggiataax.axvline, aggiungi una legenda e visualizza il grafico.
Per un classificatore di mango:
Best depth: 5, test accuracy 0.867Poi Coddy descrive il tuo grafico. Il loro è simile a questo:
Provalo tu
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Una riga per ogni oggetto celeste osservato dal telescopio: 1 in galaxy indica una galassia, 0 una stella
sky = pd.read_csv("sky.csv")
features = ["brightness_mag", "size_arcsec", "roundness", "color_index"]
X_train, X_test, y_train, y_test = train_test_split(sky[features], sky["galaxy"], test_size=0.25, random_state=0)
depths = range(1, 11)
fig, ax = plt.subplots()
ax.set_title("Star or Galaxy?")
ax.set_xlabel("Tree depth")
ax.set_ylabel("Accuracy")
# 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