Description
As far as I can tell, sklearn.feature_selection.RFE
has no way to pass sample weights to the estimator alongside the data.
I have fixed this in my code with:
index bbe0cda..f5072b2 100644
--- a/sklearn/feature_selection/rfe.py
+++ b/sklearn/feature_selection/rfe.py
@@ -120,7 +120,7 @@ class RFE(BaseEstimator, MetaEstimatorMixin, SelectorMixin):
def _estimator_type(self):
return self.estimator._estimator_type
- def fit(self, X, y):
+ def fit(self, X, y, **fit_params):
"""Fit the RFE model and then the underlying estimator on the selected
features.
@@ -132,9 +132,9 @@ class RFE(BaseEstimator, MetaEstimatorMixin, SelectorMixin):
y : array-like, shape = [n_samples]
The target values.
"""
- return self._fit(X, y)
+ return self._fit(X, y, **fit_params)
- def _fit(self, X, y, step_score=None):
+ def _fit(self, X, y, step_score=None, **fit_params):
X, y = check_X_y(X, y, "csc")
# Initialization
n_features = X.shape[1]
@@ -166,7 +166,7 @@ class RFE(BaseEstimator, MetaEstimatorMixin, SelectorMixin):
if self.verbose > 0:
print("Fitting estimator with %d features." % np.sum(support_))
- estimator.fit(X[:, features], y)
+ estimator.fit(X[:, features], y, **fit_params)
# Get coefs
if hasattr(estimator, 'coef_'):
Would this be a worthwhile contribution to scikit-learn?
Versions
In [1]: import platform; print(platform.platform())
Linux-3.13.0-63-generic-x86_64-with-Ubuntu-14.04-trusty
In [2]: import sys; print("Python", sys.version)
('Python', '2.7.6 (default, Jun 22 2015, 17:58:13) \n[GCC 4.8.2]')
In [3]: import numpy; print("NumPy", numpy.__version__)
('NumPy', '1.11.0')
In [4]: import scipy; print("SciPy", scipy.__version__)
('SciPy', '0.17.1')
In [5]: import sklearn; print("Scikit-Learn", sklearn.__version__)
('Scikit-Learn', '0.18.dev0')
TODO:
- Add support for
sample_weight
inRFE
- Add support for
sample_weight
inRFECV