我正在尝试在多标签场景中将特征选择作为 scikit-learn 管道的一部分。我的目的是为一些给定的 k 选择最好的 K 个特征。
这可能很简单,但我不明白如何在这种情况下获取选定的特征索引。
在常规情况下,我可以做这样的事情:
anova_filter = SelectKBest(f_classif, k=10)
anove_filter.fit_transform(data.X, data.Y)
anova_filter.get_support()
但是在多标签场景中,我的标签尺寸是 #samples X #unique_labels 所以 fit 和 fit_transform 产生以下异常: ValueError: bad input shape
这是有道理的,因为它需要维度 [#samples] 的标签
在多标签场景中,这样做是有意义的:
clf = Pipeline([('f_classif', SelectKBest(f_classif, k=10)),('svm', LinearSVC())])
multiclf = OneVsRestClassifier(clf, n_jobs=-1)
multiclf.fit(data.X, data.Y)
但是我得到的对象是 sklearn.multiclass.OneVsRestClassifier 类型,它没有 get_support 函数。在管道期间使用经过训练的 SelectKBest 模型时,如何获得它?