From 31c0408cb4d33b4d9725a2448cd888b2643dcc01 Mon Sep 17 00:00:00 2001 From: Pavel Gladkov Date: Mon, 8 Feb 2016 23:15:18 +0300 Subject: [PATCH] add feature_importances_ property for XGBClassifier --- python-package/xgboost/sklearn.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/python-package/xgboost/sklearn.py b/python-package/xgboost/sklearn.py index 763551abf..0a6589016 100644 --- a/python-package/xgboost/sklearn.py +++ b/python-package/xgboost/sklearn.py @@ -326,6 +326,8 @@ class XGBClassifier(XGBModel, XGBClassifierBase): else: evals = () + self._features_count = X.shape[1] + self._le = LabelEncoder().fit(y) training_labels = self._le.transform(y) @@ -414,6 +416,22 @@ class XGBClassifier(XGBModel, XGBClassifierBase): return evals_result + @property + def feature_importances_(self): + """ + Returns + ------- + feature_importances_ : array of shape = [n_features] + + """ + fs = self.booster().get_fscore() + keys = [int(k.replace('f', '')) for k in fs.keys()] + fs_dict = dict(zip(keys, fs.values())) + all_features_dict = dict.fromkeys(range(0, self._features_count), 0) + all_features_dict.update(fs_dict) + return np.array(all_features_dict.values()) + + class XGBRegressor(XGBModel, XGBRegressorBase): # pylint: disable=missing-docstring __doc__ = """Implementation of the scikit-learn API for XGBoost regression.