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

Fra*_*cis 5 python normalization scikit-learn

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

我想嵌入上述RFECV运行 CV 测试的过程,因此我尝试了以下操作:

首先 X_scaled = preprocessing.scale(X)X整个数据集在哪里。这样做,训练和测试数据不会分开缩放,这一点不予考虑。

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

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

作为参数的参数RFECV

rfecv = RFECV(estimator=scaling_svm, step=1, cv=StratifiedKFold(y, 7),
                  scoring=score, verbose=0)
Run Code Online (Sandbox Code Playgroud)

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

Dav*_* M. 0

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

from sklearn.pipeline import Pipeline
class RfePipeline(Pipeline):
    @property
    def coef_(self):
        return self._final_estimator.coef_
Run Code Online (Sandbox Code Playgroud)

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

请参阅此处类似的问题。