Menu
CoddyTech

Perché funzionano le foreste

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

Gli alberi di una foresta differiscono intenzionalmente. Ognuno viene addestrato su un campione bootstrap: righe estratte casualmente con reinserimento, quindi alcune si ripetono e altre restano escluse.

Ogni domanda seleziona anche alcuni elementi a caso. Gli alberi fanno errori diversi e il voto li annulla. Due specie di lucciole:

Due grafici di 150 lucciole, durata del lampo sull’asse orizzontale e pausa su quello verticale, cerchi blu per una specie e triangoli rossi per l’altra. A sinistra, un albero: il suo confine presenta sottili strisce che raggiungono singole lucciole. A destra, una foresta di 100 alberi: un unico confine uniforme tra i gruppi

La foresta mantiene una striscia solo dove la maggior parte degli alberi è d'accordo.

Gli alberi si trovano in forest.estimators_:

third = forest.estimators_[2]
print(round(third.score(X_test, y_test), 3))

Questo stampa 0.737. L’intera foresta ottiene un punteggio di 0.895.

challenge icon

Sfida

Medio

Una foresta batte i propri alberi? Il codice iniziale adatta forest a riders.csv, i ciclisti che hanno completato o meno una pedalata di 160 km in meno di 6 ore, e prepara il grafico.

  1. Calcola il punteggio di ogni albero della foresta sulle righe di test.
  2. Rappresenta i punteggi con un istogramma, bins=10, e indica forest_acc con una linea verticale rossa.
  3. Stampa quanti alberi batte la foresta.

Un'altra pedalata ha stampato The forest beats 88 of its 100 trees e ha disegnato questo:

Un istogramma intitolato La foresta e i suoi alberi: accuratezze di test degli alberi da circa 0.53 a 0.85, la maggior parte vicine a 0.70, e una linea verticale rossa vicino a 0.77, a destra della maggior parte delle barre

Coddy descrive poi il tuo grafico.

Provalo tu

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# Partecipanti a una pedalata di beneficenza di 160 km: hanno concluso in meno di 6 ore (1) oppure no (0)
riders = pd.read_csv("riders.csv")
features = ["weekly_km", "long_ride_km", "age", "years_riding", "rest_days", "sleep_hours"]
X = riders[features].to_numpy()  # un semplice array, nel formato atteso dagli alberi della foresta
y = riders["under_6h"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
forest_acc = forest.score(X_test, y_test)

fig, ax = plt.subplots()
ax.set_title("The Forest and Its Trees")
ax.set_xlabel("Test accuracy")
ax.set_ylabel("Trees")

# 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