【发布时间】:2016-08-30 11:10:03
【问题描述】:
我希望使用 sklearn 对多标签数据集执行特征选择。我想获得跨标签的最终特征集,然后我将在另一个机器学习包中使用它们。本来打算用我看到的here的方法,分别为每个标签选择相关的特征。
from sklearn.svm import LinearSVC
from sklearn.feature_selection import chi2, SelectKBest
from sklearn.multiclass import OneVsRestClassifier
clf = Pipeline([('chi2', SelectKBest(chi2, k=1000)),
('svm', LinearSVC())])
multi_clf = OneVsRestClassifier(clf)
然后我计划使用以下方法提取包含的特征的索引,每个标签:
selected_features = []
for i in multi_clf.estimators_:
selected_features += list(i.named_steps["chi2"].get_support(indices=True))
现在,我的问题是,如何选择要包含在最终模型中的选定功能?我可以使用每一个独特的特征(包括只与一个标签相关的特征),或者我可以做一些事情来选择与更多标签相关的特征。
我最初的想法是创建一个选择给定特征的标签数量的直方图,并根据视觉检查确定一个阈值。我担心的是这种方法是主观的。有没有更原则的方法来使用 sklearn 对多标签数据集执行特征选择?
【问题讨论】:
标签: python-2.7 machine-learning scikit-learn feature-selection multilabel-classification