多标签分类的特征选择(scikit-learn)



我试图在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."

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

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

也就是说,特征选择实际上并不适用于开箱即用的多标签;目前最好的方法是将特征选择和分类器结合在一起,然后将其提供给多标签元估计器。示例(未测试):

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

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

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

clf = Pipeline([('chi2', SelectKBest(chi2, k=1000)),
            ('lasso', OneVsRestClassifier(LogisticRegression()))])

相关内容

  • 没有找到相关文章