Profondeur de l’arbre
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 29 sur 58.
Un arbre peut continuer à poser des questions jusqu’à ce que chaque ligne d’entraînement ait sa propre réponse. Il a alors mémorisé, au lieu d’apprendre :
Les arbres profonds apprennent le bruit de leurs propres lignes d’entraînement, donc la précision sur l’ensemble de test atteint un maximum, puis diminue. Essayez plusieurs profondeurs :
train = []
test = []
for d in range(1, 13):
tree = DecisionTreeClassifier(max_depth=d, random_state=0)
tree.fit(X_train, y_train)
train.append(tree.score(X_train, y_train))
test.append(tree.score(X_test, y_test))Sur ces lunes, la profondeur 6 donne les meilleurs résultats sur les nouvelles lignes : gardez-la pour l’instant. À partir de la profondeur 8, l’arbre est parfait sur les lignes qu’il a mémorisées, mais moins performant sur les autres.
Défi
MoyenUne étude télescopique classe les objets célestes en étoiles et en galaxies. Le code de départ les répartit et prépare le graphique.
- Pour chaque profondeur dans
depths, entraîne un arbre (random_state=0) et conserve les deux précisions. - Affiche la profondeur ayant la meilleure précision de test, comme ci-dessous.
- train et
test, indique la meilleure profondeur avec une ligne verticale en pointillésax.axvline, ajoute une légende, puis affiche le graphique.
Pour un trieur de mangues :
Best depth: 5, test accuracy 0.867Ensuite, Coddy décrit ton graphique. Le sien ressemble à ceci :
Essayez vous-même
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Une ligne par objet céleste dans un relevé au télescope : 1 dans galaxy indique une galaxie, 0 une étoile
sky = pd.read_csv("sky.csv")
features = ["brightness_mag", "size_arcsec", "roundness", "color_index"]
X_train, X_test, y_train, y_test = train_test_split(sky[features], sky["galaxy"], test_size=0.25, random_state=0)
depths = range(1, 11)
fig, ax = plt.subplots()
ax.set_title("Star or Galaxy?")
ax.set_xlabel("Tree depth")
ax.set_ylabel("Accuracy")
# É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êtEntraînez-vous par vous-même : Compilateur Python en ligne