Importance des caractéristiques
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 30 sur 58.
Sur quelles caractéristiques un arbre s’appuie-t-il ? feature_importances_ indique la part de chaque caractéristique dans le tri effectué par ses questions, et la somme de ces parts est égale à 1 :
Triées dans une Series, elles forment un graphique classé. ax.barh trace les barres à l’horizontale, ce qui permet aux noms longs de tenir :
imp = pd.Series(tree.feature_importances_, index=iris.feature_names).sort_values()
ax.barh(imp.index, imp.values)Un 0 signifie que l’arbre n’a jamais posé de question sur cette caractéristique. Les sépales peuvent tout de même avoir de l’importance : les pétales ont déjà indiqué à l’arbre ce qu’ils feraient.
Défi
MoyenUne école de surf veut savoir ce qui permet aux débutants de se tenir debout sur la planche pendant leur première semaine. Le programme lit une profondeur ; le code de départ entraîne un arbre de cette profondeur et prépare le graphique.
- Mets les importances dans une Series nommée d’après la caractéristique, de la plus petite à la plus grande.
- Affiche la caractéristique la plus importante (3 décimales) et celles qui n’ont jamais été prises en compte, comme ci-dessous.
- Représente-les sous forme de barres horizontales et affiche le graphique.
Pour une école de natation :
Top feature: pool_hours (0.612)
Never asked: ['goggles']Ensuite, Coddy décrit ton graphique. Le leur 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
depth = int(input())
# Une ligne par débutant : 1 dans standing signifie que la personne a réussi à se tenir debout sur la planche pendant sa première semaine
surf = pd.read_csv("surfschool.csv")
features = ["age", "fitness", "days_surfed", "skated_before", "lesson_hours", "wetsuit_fit"]
X_train, X_test, y_train, y_test = train_test_split(surf[features], surf["standing"], test_size=0.25, random_state=0)
tree = DecisionTreeClassifier(max_depth=depth, random_state=0)
tree.fit(X_train, y_train)
fig, ax = plt.subplots(layout="constrained") # laisse de la place pour les noms longs
ax.set_title("What Gets Beginners Standing?")
ax.set_xlabel("Importance")
# É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