Pourquoi les forêts fonctionnent
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 42 sur 58.
Les arbres d’une forêt diffèrent volontairement. Chacun est entraîné sur un échantillon bootstrap : des lignes tirées au hasard avec remise, de sorte que certaines se répètent et que d’autres ne sont pas sélectionnées.
Chaque question sélectionne également quelques caractéristiques au hasard. Les arbres font des erreurs différentes, et les votes les annulent. Deux espèces de lucioles :
La forêt ne conserve une bande que là où la plupart des arbres sont d’accord.
Les arbres se trouvent dans forest.estimators_ :
third = forest.estimators_[2]
print(round(third.score(X_test, y_test), 3))Cela affiche 0.737. La forêt entière obtient un score de 0.895.
Défi
MoyenUne forêt bat-elle ses propres arbres ? Le code de départ ajuste forest sur riders.csv, qui contient des cyclistes ayant terminé ou non une sortie de 160 km en moins de 6 heures, et prépare le graphique.
- Évalue chaque arbre de la forêt sur les lignes de test.
- Représente les scores sous forme d’histogramme avec
bins=10, et indiqueforest_accpar une ligne verticale rouge. - Affiche le nombre d’arbres que la forêt bat.
Une autre sortie à vélo a affiché The forest beats 88 of its 100 trees et a produit ce graphique :
Coddy décrit ensuite ton graphique.
Essayez vous-même
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# Participants à une randonnée caritative de 160 km : ont terminé en moins de 6 heures (1) ou non (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 simple tableau, au format attendu par les arbres de la forêt
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")
# Écrivez votre code ci-dessous
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Apprentissage supervisé
1Votre premier modèle
Apprendre à partir d’exemplesJeux d’entraînement et de testAjuster et prédireÉvaluer un modèleRécapitulatif : trieur de graines4Régression logistique
Prédictions oui ou nonLe seuil de décisionLes poids comme indicesPlusieurs classesRécapitulatif : filtre anti-spam2Plus proches voisins
Comment k-NN prend ses décisionsChoisir kFrontières de décisionMettre les voisins à l’échelleRécapitulatif : voisins et vin5Évaluer les classificateurs
La matrice de confusionPrécision et rappelLe score F1Classes déséquilibréesCourbes ROCRécapitulatif : test de dépistage8Validation croisée
Validation K-foldComparer les modèles équitablementRecherche par grilleRécapitulatif : réparations de skateboard11Projet : espèces de manchots
À la rencontre des manchotsPréparer les donnéesChoisir un modèleOptimiser le modèle gagnantDéployer le modèle3Régression linéaire
Prédire des nombresPlusieurs caractéristiquesMesurer les erreursGraphiques des résidusRécapitulatif : locations de vélos6Arbres de décision
Les arbres posent des questionsLire un arbreProfondeur de l’arbreImportance des caractéristiquesRécapitulatif : décisions de prêt9Ensembles
Forêts aléatoiresPourquoi les forêts fonctionnentBoosting par gradientRécapitulatif : le garde forestierEntraînez-vous par vous-même : Compilateur Python en ligne