Forêts aléatoires
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 41 sur 58.
Un arbre de décision est instable : modifiez quelques lignes d’entraînement et ses questions changent. Ce chapitre stabilise les arbres en en utilisant un grand nombre.
Une forêt aléatoire entraîne de nombreux arbres et les laisse voter. Ici, sept arbres répondent pour un geyser :
En code, c’est un modèle supplémentaire à ajuster :
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))Sur 300 jours de geyser, cela affiche 0.893, alors qu’un seul arbre a obtenu un score de 0.813. n_estimators correspond au nombre d’arbres.
De nombreux électeurs, moins d’erreurs.
Défi
MoyenUne école de chiens guides veut savoir tôt quels chiots seront qualifiés. Le code de départ divise puppies.csv, évalue un arbre et lit un nombre d’arbres.
- Entraîne une forêt composée de ce nombre d’arbres (
random_state=0) et affiche sa précision sur les données de test. - Affiche le modèle gagnant et l’écart, ou
A tie.
Pour une autre école et 50 :
Single tree: 0.740
Forest: 0.860
The forest wins by 0.120Essaie ensuite 1 : une forêt d’un seul arbre donne étonnamment de mauvais résultats. La leçon suivante explique pourquoi.
Essayez vous-même
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
# Chiots d'une école de chiens guides : calme, concentration et réaction de sursaut aux bruits forts (1 à 10),
# poids, nombre de mois passés dans leur famille d'accueil et aptitude à devenir chien guide (1) ou non (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())
# Ne modifiez pas les lignes ci-dessous : un seul arbre à surpasser
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}")
# É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