2

我正在尝试通过 scikit-learn (sklearn.feature_selection.SelectKBest) 中的卡方方法进行特征选择。当我尝试将此应用于多标签问题时,我收到以下警告:

UserWarning: Duplicate scores. Result may depend on feature ordering.There are probably duplicate features, or you used a classification score for a regression task. warn("Duplicate scores. Result may depend on feature ordering."

为什么会出现这种情况以及如何正确应用特征选择?

4

2 回答 2

5

该代码警告您可能需要执行任意平局,因为某些功能具有完全相同的分数。

也就是说,特征选择实际上不适用于开箱即用的多标签。您目前可以做的最好的事情是将特征选择和分类器在管道中结合在一起,然后将其提供给多标签元估计器。示例(未经测试):

clf = Pipeline([('chi2', SelectKBest(chi2, k=1000)),
                ('svm', LinearSVC())])
multi_clf = OneVsRestClassifier(clf)

(我认为,即使绑定的功能实际上不是第 k 个和第 (k+1) 个,我认为也会发出此警告。通常可以安全地忽略它。)

于 2013-05-07T14:10:14.370 回答
1

我知道这个话题有点老了,但以下内容对我有用:

clf = Pipeline([('chi2', SelectKBest(chi2, k=1000)),
            ('lasso', OneVsRestClassifier(LogisticRegression()))])
于 2014-06-16T18:56:26.257 回答