Важность признаков в градиентном бустинге
Как и в случае со случайными лесами, из моделей градиентного бустинга можно извлечь важность признаков, чтобы понять, какие из них лучше всего предсказывают целевую переменную. Иногда полезно опробовать несколько древовидных моделей и сравнить важность признаков в каждой из них — это помогает сгладить особенности, характерные для отдельной модели.
Важность признаков хранится в виде массива numpy в атрибуте .feature_importances_ модели градиентного бустинга. Чтобы построить наглядный график, нам нужно получить отсортированные индексы с помощью np.argsort(). Поскольку нам нужны признаки от наиболее важных к наименее важным, воспользуемся индексацией Python для обращения порядка: feat_importances[::-1].
Это упражнение является частью курса
Машинное обучение для финансов на Python
Инструкции к упражнению
- Разверните переменную
sorted_indexот наибольшего значения к наименьшему с помощью индексации Python. - Создайте отсортированный список меток признаков
labels, преобразовавfeature_namesв массив numpy и проиндексировав его с помощьюsorted_index. - Постройте столбчатую диаграмму: укажите позиции делений по оси X, значения
feature_importances, проиндексированные с помощьюsorted_index, иlabelsв качестве подписей делений по оси X.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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()