How could we get feature_importances
when we are performing regression with XGBRegressor()
?
There is something like XGBClassifier().feature_importances_
?
Data Science Stack Exchange is a question and answer site for Data science professionals, Machine Learning specialists, and those interested in learning more about the field. It only takes a minute to sign up.
Sign up to join this communityfrom xgboost import XGBClassifier
model = XGBClassifier.fit(X,y)
# importance_type = ['weight', 'gain', 'cover', 'total_gain', 'total_cover']
model.get_booster().get_score(importance_type='weight')
However, the method below also returns feature importance's and that have different values to any of the "importance_type" options in the method above. This was raised in this github issue, but there is no answer [as of Jan 2019].
model.feature_importances_
feature_importances_
equal the values in the dict get_score(importance_type='weight')
where each element is divided by the sum of elements.
$\endgroup$
Nov 22, 2018 at 11:33
Finally I have solved this issue by:
model.booster().get_score(importance_type='weight')
model.get_score(importance_type='weight')
$\endgroup$
Oct 15, 2018 at 7:06
model.get_booster().get_score(importance_type='weight')
instead.
$\endgroup$
In the past the Scikit-Learn wrapper XGBRegressor
and XGBClassifier
should get the feature importance using model.booster().get_score()
. Not sure from which version but now in xgboost 0.71
we can access it using
model.feature_importances_
from xgboost.sklearn import XGBRegressor
in version 0.72.1 and this worked for me. Thanks!
$\endgroup$
feature_importances_
withXGBRegressor()
, because it works only withXGBClassifier()
. $\endgroup$