Menu
CoddyTech

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 :

Deux graphiques représentant 150 lucioles, la durée du flash en abscisse et la pause en ordonnée, des cercles bleus pour une espèce et des triangles rouges pour l’autre. À gauche, un arbre : sa frontière comporte de fines bandes qui s’étendent jusqu’à des lucioles isolées. À droite, une forêt de 100 arbres : une frontière lisse entre les groupes

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.

challenge icon

Défi

Moyen

Une 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.

  1. Évalue chaque arbre de la forêt sur les lignes de test.
  2. Représente les scores sous forme d’histogramme avec bins=10, et indique forest_acc par une ligne verticale rouge.
  3. 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 :

Un histogramme intitulé La forêt et ses arbres : les précisions des arbres sur les données de test vont d’environ 0.53 à 0.85, la plupart étant proches de 0.70, et une ligne verticale rouge se trouve près de 0.77, à droite de la plupart des barres

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
quiz iconTestez-vous

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é

Entraînez-vous par vous-même : Compilateur Python en ligne