问题描述
我有一个包含约 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 (将#修改为@)