我编写了代码来查找整个数据集中的每个特性对于多类分类的重要性。现在,我希望找到多类分类中每个类的特性重要性,也就是说,我希望找到对于分类更重要的特性列表(每个类)。
from sklearn.datasets import make_classification
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
model = DecisionTreeClassifier()
model.fit(x3, y3)
importance = model.feature_importances_
for i,v in enumerate(importance):
print('Feature[%0d]:%s, Score: %.6f' % (i,df.columns[i],v))
plt.subplots(figsize=(15,7))
plt.bar([x for x in range(len(importance))], importance)
plt.xlabel('Feature index')
plt.ylabel('Feature importance score')
plt.xticks(rotation=90)
plt.xticks(np.arange(0,len(df.columns)-2, 2.0))
plt.show()编辑(28-04-2022):
我读了一篇题为“一种新的入侵检测数据集的生成及入侵流量特征”的报纸;引用:
在评估部分,我们首先从数据集中提取出80个流量特征,并利用RandomForestRegressor算法确定最佳的短特征集来检测每个攻击家族。然后,用七种常用的机器学习算法对所选特征的性能和准确性进行了检验。
有人能解释一下是怎么做到的吗?点击那张纸上的图片
发布于 2022-04-28 12:19:04
决策树被分割成节点,最大限度地提高信息增益。每一次分割都是基于基尼指数或熵值。因此,我认为您想要实现的唯一方法是打印出树并亲自进行视觉检查,前提是节点不多。
您不能肯定地说,您的一个特性在区分某个类时非常重要,因为假设您有两个类,A和B。区分A类和B类的特性也是对B类和A类的区别,所以这个特性对于两个类都很重要。通常,您只能获得整体特性的重要性,而不是特定于任何类,而是帮助完成工作的特性。
树是高度不稳定的,您的数据集中只要稍加更改,就会构建一棵与第一棵完全不同的树。
编辑(28-04-2022):
纸表示,他们使用的是随机森林回归器,与您使用的决策树不同。随机-森林回归意味着他们有一个回归的任务。本文利用该算法作为一种特征选择技术,减少了80个特征。选择的少数特征(基于特征重要性)随后被用于培训其他七种不同的模型。使用更少的功能,而不是整个80,将使最终的模型更优雅,更不容易过度适应。
重要的是要知道,随机森林是一种集合方法,在背景中有许多随机事件,如袋装和自举。特征重要性是模型解释的一种形式。很难用您所描述的方式来解释集成算法。这样的方法太详细了。所以,当然,他们在报纸上写的和你想的不一样。
决策树更易于解释。如果您想要理解决策树模型中的因果关系,可以使用单击此处来查看如何将模型转换为规则或按照前面的建议,用肉眼观察该树。
https://stackoverflow.com/questions/72043397
复制相似问题