Scikit-learn的RandomForestRegressor中“feature_importances_”是如何排序的

9 投票
3 回答
27736 浏览
提问于 2025-04-18 07:45

如果我运行一个模型(在这个例子中叫做clf),我得到的输出看起来像这样。请问我怎么能把这个输出和用来训练这个分类器的特征输入联系起来呢?

>>> clf.feature_importances_

array([ 0.01621506,  0.18275428,  0.09963659,... ])

3 个回答

0

这里的“顺序”指的是你训练或数据集中各个特征/属性的排列顺序。

你可以把这些重要性分数和它们对应的特征/属性名称放在一起显示,像下面这样:

attributes = list(your_data_set)

sorted(zip(clf.feature_importances_, attributes), reverse=True)

输出的结果可能类似于:

[(0.01621506, 'feature1'),
(0.09963659, 'feature2'),
(0.18275428, 'feature3'),
...
...
3

你可以把结果保存在一个pandas数据框里,方法如下:

pandas.DataFrame({'col_name': clf.feature_importances_}, index=x.columns).sort_values(by='col_name', ascending=False)

通过将数据按降序排列,我们可以找到一些重要的特征。

15

正如评论中提到的,特征的重要性顺序似乎是根据“x”这个输入变量的顺序来排列的(我把它从Pandas转换成了Python本身的数据结构)。我用这段代码生成了一个类型的列表,格式是这样的:(特征名称, 特征重要性)。

zip(x.columns, clf.feature_importances_)

撰写回答