微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 scikit-learn 中的 LinearSVC 中获取最具选择性的特征以进行多类预测

如何解决从 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()

Output plot of the code

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?