Feature importances met gradient boosting
Net als bij random forests kun je feature importances uit gradient boosting-modellen halen om te zien welke features de beste voorspellers zijn. Het is soms handig om verschillende boomgebaseerde modellen te proberen en naar de feature importances van allemaal te kijken. Dat helpt eventuele eigenaardigheden van één specifiek model uit te middelen.
De feature importances zijn opgeslagen als een numpy-array in de eigenschap .feature_importances_ van het gradient boosting-model. We moeten de gesorteerde indexen van de feature importances ophalen met np.argsort() om een duidelijke plot te maken. We willen de features van groot naar klein, dus gebruiken we Python-indexering om de gesorteerde importances om te keren, zoals feat_importances[::-1].
Deze oefening maakt deel uit van de cursus
Machine Learning voor finance in Python
Oefeninstructies
- Keer de variabele
sorted_indexom, van groot naar klein, met Python-indexering. - Maak de gesorteerde lijst met featurelabels als
labelsdoorfeature_namesom te zetten naar een numpy-array en te indexeren metsorted_index. - Maak een staafdiagram met de xticks, en
feature_importancesgeïndexeerd met de variabelesorted_index, enlabelsals de xtick-labels.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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()