【问题标题】:Scaling data in RFECV with scikit-learn使用 scikit-learn 在 RFECV 中缩放数据
【发布时间】:2015-06-22 11:38:00
【问题描述】:

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

我想将上述过程嵌入到运行 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_,因此出现错误。 我应该怎么做?任何帮助将不胜感激。

【问题讨论】:

    标签: python scikit-learn normalization


    【解决方案1】:

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

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

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

    查看类似问题here

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 1970-01-01
      • 2018-10-27
      • 2016-04-14
      • 2019-01-10
      • 1970-01-01
      • 2020-05-31
      • 2018-11-05
      • 2015-04-14
      相关资源
      最近更新 更多