Merge pull request #818 from webgeist/master

Add feature_importances_ property for XGBClassifier
This commit is contained in:
Tianqi Chen 2016-02-16 10:19:04 -08:00
commit 2baea12d97

View File

@ -326,6 +326,8 @@ class XGBClassifier(XGBModel, XGBClassifierBase):
else: else:
evals = () evals = ()
self._features_count = X.shape[1]
self._le = LabelEncoder().fit(y) self._le = LabelEncoder().fit(y)
training_labels = self._le.transform(y) training_labels = self._le.transform(y)
@ -414,6 +416,22 @@ class XGBClassifier(XGBModel, XGBClassifierBase):
return evals_result 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): class XGBRegressor(XGBModel, XGBRegressorBase):
# pylint: disable=missing-docstring # pylint: disable=missing-docstring
__doc__ = """Implementation of the scikit-learn API for XGBoost regression. __doc__ = """Implementation of the scikit-learn API for XGBoost regression.