ÎncepețiÎncepe gratuit

Importanța caracteristicilor în gradient boosting

La fel ca în cazul pădurilor aleatoare, putem extrage importanța caracteristicilor din modelele de gradient boosting pentru a înțelege care sunt cei mai buni predictori. Uneori este util să compari mai multe modele bazate pe arbori și să analizezi importanța caracteristicilor din fiecare. Astfel poți atenua particularitățile care pot apărea dintr-un singur model.

Importanța caracteristicilor este stocată ca un array numpy în proprietatea .feature_importances_ a modelului de gradient boosting. Va trebui să obținem indicii sortați ai importanțelor caracteristicilor folosind np.argsort(), pentru a putea genera un grafic clar. Deoarece vrem caracteristicile ordonate de la cea mai importantă la cea mai puțin importantă, vom folosi indexarea din Python pentru a inversa importanțele sortate, astfel: feat_importances[::-1].

Acest exercițiu face parte din cursul

Machine Learning pentru finanțe în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Inversează variabila sorted_index pentru a o ordona de la cea mai mare la cea mai mică valoare, folosind indexarea Python.
  • Creează lista sortată de etichete ale caracteristicilor, labels, convertind feature_names într-un array numpy și indexând cu sorted_index.
  • Creează un grafic de tip bară cu marcajele de pe axa x, feature_importances indexat cu variabila sorted_index, și labels ca etichete pentru marcajele de pe axa x.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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()
Editează și rulează codul