Foreste casuali
Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 41 di 58.
Un singolo albero decisionale è instabile: basta modificare alcune righe di addestramento e cambiano le sue domande. In questo capitolo renderai gli alberi più stabili chiedendone il parere a molti.
Una foresta casuale addestra molti alberi e li lascia votare. Ecco sette alberi che rispondono per un geyser:
Nel codice, c'è un altro modello da addestrare:
from sklearn.ensemble import RandomForestClassifier
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
print(forest.score(X_test, y_test))Su 300 giorni di geyser, questo stampa 0.893, mentre un albero ha ottenuto un punteggio di 0.813. n_estimators è il numero di alberi.
Molti elettori, meno errori.
Sfida
MedioUna scuola per cani guida vuole sapere in anticipo quali cuccioli saranno idonei. Il codice iniziale divide puppies.csv, valuta un albero e legge il numero di alberi.
- Addestra una foresta con quel numero di alberi (
random_state=0) e stampa la sua accuratezza sul test. - Stampa quale modello vince e di quanto, oppure
A tie.
Per un’altra scuola e con 50:
Single tree: 0.740
Forest: 0.860
The forest wins by 0.120Prova poi 1: una foresta di un solo albero ha risultati sorprendentemente scarsi. La prossima lezione spiega perché.
Provalo tu
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
# Cuccioli in una scuola per cani guida: calma, concentrazione e reazione ai rumori forti (da 1 a 10),
# peso, mesi trascorsi con la famiglia affidataria e idoneità come cane guida (1) o meno (0)
puppies = pd.read_csv("puppies.csv")
X = puppies[["calmness", "focus", "noise_startle", "weight_kg", "months_with_family"]]
y = puppies["qualified"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
trees = int(input())
# Non modificare le righe seguenti: un singolo albero da battere
tree = DecisionTreeClassifier(random_state=0)
tree.fit(X_train, y_train)
tree_acc = tree.score(X_test, y_test)
print(f"Single tree: {tree_acc:.3f}")
# 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 prestiti9Insiemi
Foreste casualiPerché funzionano le foresteGradient BoostingRiepilogo: il guardiano della forestaEsercitati da solo: Compilatore Python online