Skip to content

Commit 3a106fc

Browse files
fukataniNelleV
authored andcommitted
Fix _get_importances. (scikit-learn#7487)
Not to use hasattr.
1 parent 5fcc7e5 commit 3a106fc

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

sklearn/feature_selection/from_model.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,16 @@
1414

1515
def _get_feature_importances(estimator):
1616
"""Retrieve or aggregate feature importances from estimator"""
17-
if hasattr(estimator, "feature_importances_"):
18-
importances = estimator.feature_importances_
17+
importances = getattr(estimator, "feature_importances_", None)
1918

20-
elif hasattr(estimator, "coef_"):
19+
if importances is None and hasattr(estimator, "coef_"):
2120
if estimator.coef_.ndim == 1:
2221
importances = np.abs(estimator.coef_)
2322

2423
else:
2524
importances = np.sum(np.abs(estimator.coef_), axis=0)
2625

27-
else:
26+
elif importances is None:
2827
raise ValueError(
2928
"The underlying estimator %s has no `coef_` or "
3029
"`feature_importances_` attribute. Either pass a fitted estimator"

sklearn/feature_selection/rfe.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,9 @@ def _fit(self, X, y, step_score=None):
171171
# Get coefs
172172
if hasattr(estimator, 'coef_'):
173173
coefs = estimator.coef_
174-
elif hasattr(estimator, 'feature_importances_'):
175-
coefs = estimator.feature_importances_
176174
else:
175+
coefs = getattr(estimator, 'feature_importances_', None)
176+
if coefs is None:
177177
raise RuntimeError('The classifier does not expose '
178178
'"coef_" or "feature_importances_" '
179179
'attributes')

0 commit comments

Comments
 (0)