我正在寻找使用 sklearn 对多标签数据集执行特征选择。我想获得跨标签的最终特征集,然后我将在另一个机器学习包中使用它们。我打算使用我在这里看到的方法,它分别为每个标签选择相关特征。
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 为多标签数据集执行特征选择?