gpt4 book ai didi

python-2.7 - 使用sklearn进行多标签特征选择

转载 作者:行者123 更新时间:2023-11-30 08:31:44 27 4
gpt4 key购买 nike

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

最佳答案

根据本文paper中的结论:

[...] rank features according to the average or the maximum Chi-squared score across all labels, led to most of the best classifiers while using less features.

然后,为了选择一个好的功能子集,您只需执行以下操作(类似):

from sklearn.feature_selection import chi2, SelectKBest

selected_features = []
for label in labels:
selector = SelectKBest(chi2, k='all')
selector.fit(X, Y[label])
selected_features.append(list(selector.scores_))

// MeanCS
selected_features = np.mean(selected_features, axis=0) > threshold
// MaxCS
selected_features = np.max(selected_features, axis=0) > threshold

注意:在上面的代码中,我假设 X 是某个文本向量化器(文本的向量化版本)的输出,Y 是每个标签一列的 pandas 数据框(因此我可以选择列 Y[标签])。另外,还有一个阈值变量应该预先修复。

关于python-2.7 - 使用sklearn进行多标签特征选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37037450/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com