使用 scikit-learn 在 RFECV 中缩放数据



在训练和预测分类任务的进度之前,通常会分别缩放训练和测试数据。

我想将上述过程嵌入到运行 CV 测试RFECV中,因此我尝试了以下内容:

做 首先X_scaled = preprocessing.scale(X),其中X是整个数据集。这样,训练和测试数据不会单独缩放,这不会被考虑在内。

我尝试的另一种方法是通过:

scaling_svm = Pipeline([('scaler', preprocessing.StandardScaler()),
                        ('svm',LinearSVC(penalty=penalty, dual=False, class_weight='auto'))])

作为 RFECV 中参数的参数:

rfecv = RFECV(estimator=scaling_svm, step=1, cv=StratifiedKFold(y, 7),
                  scoring=score, verbose=0)

但是,我收到一个错误,因为RFECV需要estimator具有属性.coef_。我应该怎么做?任何帮助将不胜感激。

然,派对有点晚了,但如果有人感兴趣,您可以创建一个自定义管道,如下所示:

from sklearn.pipeline import Pipeline
class RfePipeline(Pipeline):
    @property
    def coef_(self):
        return self._final_estimator.coef_

然后在代码中将Pipeline替换为RfePipeline

在这里看到类似的问题。

相关内容

  • 没有找到相关文章

最新更新