我正在尝试在多标签场景中将功能选择作为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:输入形状错误
这是有道理的,因为它需要维度标签[#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模型?