在scikit-learn中使用交叉验证进行回归的递归特征消除

时间:2016-11-16 09:06:07

标签: python matplotlib scikit-learn wrapper rfe

我想用scikit-learn对我的回归问题应用像递归特征消除这样的包装器方法。 Recursive feature elimination with cross-validation提供了一个很好的概述,如何自动调整功能的数量。

我试过了:

~

但是我收到了一条错误消息,例如

"./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/variables"

警告听起来像我有分类问题,但我的任务是回归问题。我该怎么做才能得到结果以及出了什么问题?

1 个答案:

答案 0 :(得分:1)

以下是发生的事情:

默认情况下,当用户未指明折叠次数时,RFE交叉验证会使用3-fold交叉验证。到目前为止一切都很好。

然而,如果您查看documentation,它还会使用StartifiedKFold,以确保通过保留每个类的样本百分比来创建折叠。因此,由于(根据错误)输出y的某些元素是唯一,因此它们不能同时在3个不同的折叠中。它会抛出错误!

错误来自here

然后你需要使用不分层的K-fold:KFold

RFECV的文档说: "If the estimator is a classifier or if y is neither binary nor multiclass, sklearn.model_selection.KFold is used."