如何解决从 scikit-learn 中的 LinearSVC 中获取最具选择性的特征以进行多类预测
我有一个包含约 13k 个特征的数据集,我想选择对特定标签分类贡献最大的特征。
我在单个单元格数据上使用 sklearn.svm.LinearSVC 类。
coef_ 属性应提供此信息(据我所知),但是当从 coef_ 中排除前 10-100 个特征时,准确率/多类 f1 分数不会降低。 >
有人知道如何根据训练好的模型提取这些信息吗?
我在下面提供了示例代码,它们的作用相同,但使用的是开源数据集!
from sklearn.svm import LinearSVC
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import numpy as np
data = load_iris(return_X_y=True,as_frame=True)
print(data[1].unique()) # [0 1 2] -> three classes
svc = LinearSVC()
svc.fit(data[0],data[1])
score = svc.score(data[0],data[1])
print(svc.coef_.shape) # (3,4)
fig,axs = plt.subplots(1,3,figsize=(15,7))
for label,ax in enumerate(axs.flatten()):
args = np.argsort(-svc.coef_[label])
vals = [svc.coef_[label][arg] for arg in args]
ax.bar(args,vals)
ax.title.set_text(f"{label}")
plt.tight_layout()
if __name__ == '__main__':
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。