Importanza delle feature con gradient boosting
Come per i random forest, possiamo estrarre l'importanza delle feature dai modelli di gradient boosting per capire quali sono i predittori migliori. A volte conviene provare diversi modelli basati su alberi e confrontare le importanze delle feature di ciascuno. Questo aiuta a mediare eventuali particolarità di un singolo modello.
Le importanze delle feature sono memorizzate come array numpy nella proprietà .feature_importances_ del modello di gradient boosting. Per creare un bel grafico, ci serviranno gli indici ordinati delle importanze usando np.argsort(). Vogliamo le feature dalla più grande alla più piccola, quindi useremo l'indicizzazione di Python per invertire le importanze ordinate, ad esempio feat_importances[::-1].
Questo esercizio fa parte del corso
Machine Learning per la finanza in Python
Istruzioni dell'esercizio
- Inverti la variabile
sorted_indexper andare dal valore più grande al più piccolo usando l'indicizzazione di Python. - Crea l'elenco ordinato delle etichette delle feature come
labelsconvertendofeature_namesin un array numpy e indicizzandolo consorted_index. - Crea un grafico a barre usando gli xticks e
feature_importancesindicizzate con la variabilesorted_index, e usalabelscome etichette degli xtick.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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()