Scikit learn sklearn中分类数据的递归特征消除?

Scikit learn sklearn中分类数据的递归特征消除?,scikit-learn,categorical-data,rfe,Scikit Learn,Categorical Data,Rfe,我有一个包含8个参数(4个连续4个分类)的数据集,我正试图按照Scikit中的RFEC类消除特性 这是我使用的公式: svc = SVC(kernel="linear") rfecv = RFECV(estimator=svc, step=1, cv=StratifiedKFold(y, 2), scoring='accuracy') rfecv.fit(X, y) 由于我也有分类数据,我使用dmatrics(Patsy)将其更改为虚拟变量 我想在特征选择后对数据尝试不同的

我有一个包含8个参数(4个连续4个分类)的数据集,我正试图按照Scikit中的RFEC类消除特性

这是我使用的公式:

svc = SVC(kernel="linear")
rfecv = RFECV(estimator=svc, step=1, cv=StratifiedKFold(y, 2),
          scoring='accuracy')
rfecv.fit(X, y)
由于我也有分类数据,我使用dmatrics(Patsy)将其更改为虚拟变量

我想在特征选择后对数据尝试不同的分类模型,以改进模型和SVC

转换数据后我运行了RFE,我认为我做错了。
我们是在转换分类数据之前还是之后运行RFECV


我在任何文件中都找不到任何明确的指示

这取决于您是选择分类变量的给定值还是选择整个变量的给定值。 您当前正在选择分类变量的单个设置(也称为级别)。 要选择整个变量,您可能需要做一些黑客操作,根据SVC定义您自己的估计器。
你可以做
make_pipeline(onehotcoder(categorical_features),SVC())
,但是你需要将管道的
coef_
设置为反映输入形状的值。

谢谢Andreas。实际上,我还没有尝试过OneHotEncoder方法,而是使用数据矩阵来转换分类数据。我在转换分类数据后运行了RFEC,它运行得很好(给了我一个最佳的数字),但是当我在转换分类数据之前尝试运行时,我得到了错误“Cant convert String to Float”,因此我对是否可以在转换分类数据之前对其运行递归特征选择感到困惑。再次感谢,没有人会说这在RFE中是太严格的输入验证。然而,由于我们目前并不真正支持管道上的功能选择,我不确定有什么好的理由改变这一点。再次感谢您,假设RFEC可以而且应该仅通过管道或其他方法在分类数据转换后运行,这是正确的吗?这是有道理的,不是真的。两者都有可能,但做的事情不同。但是,在转换之前这样做并不是现在就在scikit学习中开箱即用的。感谢您的澄清,谢谢