CommencezCommencez gratuitement

Importances des caractéristiques avec le gradient boosting

Comme pour les forêts aléatoires (random forests), on peut extraire les importances des caractéristiques à partir des modèles de gradient boosting pour déterminer quelles variables sont les meilleurs prédicteurs. Il est souvent utile d'essayer différents modèles à arbres et de comparer leurs importances des caractéristiques. Cela aide à atténuer les particularités pouvant provenir d'un seul modèle.

Les importances des caractéristiques sont stockées sous forme de tableau numpy dans la propriété .feature_importances_ du modèle de gradient boosting. Nous devrons récupérer les indices triés des importances à l'aide de np.argsort() pour produire un joli graphique. Nous voulons les caractéristiques de la plus importante à la moins importante, donc nous utiliserons l'indexation Python pour inverser l'ordre trié, comme feat_importances[::-1].

Cette activité fait partie du cours

Machine Learning pour la finance en Python

Voir le cours

Instructions de l’exercice

  • Inversez la variable sorted_index pour aller du plus grand au plus petit à l'aide de l'indexation Python.
  • Créez la liste triée des étiquettes de caractéristiques labels en convertissant feature_names en tableau numpy, puis en l'indexant avec sorted_index.
  • Créez un diagramme à barres avec les xticks, feature_importances indexées par la variable sorted_index, et labels comme étiquettes des xticks.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Extract feature importances from the fitted gradient boosting model
feature_importances = gbr.feature_importances_

# Get the indices of the largest to smallest feature importances
sorted_index = np.argsort(feature_importances)[::____]
x = range(features.shape[1])

# Create tick labels 
labels = np.array(feature_names)[____]

plt.bar(____, feature_importances[____], tick_label=____)

# Set the tick lables to be the feature names, according to the sorted feature_idx
plt.xticks(rotation=90)
plt.show()
Modifier et exécuter le code