Ważność cech w gradient boostingu
Podobnie jak w przypadku lasów losowych, z modeli gradient boosting można wyodrębnić ważność cech, aby dowiedzieć się, które z nich najlepiej przewidują wynik. Warto czasem wypróbować różne modele drzewiaste i porównać ważności cech ze wszystkich z nich – pozwala to zniwelować ewentualne osobliwości wynikające z właściwości konkretnego modelu.
Ważności cech są przechowywane jako tablica numpy we właściwości .feature_importances_ modelu gradient boosting. Aby uzyskać ładny wykres, należy wyznaczić posortowane indeksy ważności cech za pomocą np.argsort(). Ponieważ chcemy uszeregować cechy od najważniejszej do najmniej ważnej, użyjemy indeksowania w Pythonie, aby odwrócić posortowane wartości: feat_importances[::-1].
To ćwiczenie jest częścią kursu
Uczenie maszynowe w finansach z Pythonem
Instrukcje do ćwiczenia
- Odwróć zmienną
sorted_index, aby przeszła od największych do najmniejszych wartości, używając indeksowania w Pythonie. - Utwórz posortowaną listę etykiet cech jako
labels, konwertującfeature_namesna tablicę numpy i indeksując ją zmiennąsorted_index. - Utwórz wykres słupkowy z podziałką osi x, wartościami
feature_importanceszaindeksowanymi przezsorted_indexorazlabelsjako etykietami na osi x.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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()