Importâncias de atributos no gradient boosting
Assim como em random forests, podemos extrair as importâncias dos atributos de modelos de gradient boosting para entender quais variáveis são melhores preditoras. Às vezes, vale a pena experimentar diferentes modelos baseados em árvores e comparar as importâncias de atributos de todos eles. Isso ajuda a suavizar eventuais peculiaridades de um modelo específico.
As importâncias de atributos são armazenadas como um array do numpy na propriedade .feature_importances_ do modelo de gradient boosting. Precisamos obter os índices ordenados dessas importâncias usando np.argsort() para fazer um bom gráfico. Queremos os atributos do maior para o menor, então vamos usar a indexação do Python para inverter as importâncias ordenadas, como em feat_importances[::-1].
Este exercicio faz parte do curso
Machine Learning para Finanças em Python
Instruções do exercicio
- Inverta a variável
sorted_indexpara ir do maior para o menor usando a indexação do Python. - Crie a lista ordenada de rótulos dos atributos como
labels, convertendofeature_namespara um array do numpy e indexando comsorted_index. - Crie um gráfico de barras com os xticks,
feature_importancesindexado com a variávelsorted_indexelabelscomo os rótulos dos xticks.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# 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()