scikit-learn:在管道中使用SelectKBest时获取所选功能

时间:2015-09-12 20:57:43

标签: machine-learning scikit-learn classification feature-selection multilabel-classification

我正在尝试在多标签场景中将功能选择作为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模型?

0 个答案:

没有答案
相关问题