我希望使用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为多标签数据集执行特征选择?