赞
踩
转自:https://blog.csdn.net/zjuPeco/article/details/77371645?locationNum=7&fps=1#commentsedit
我们知道,随机森林大致可以看成是从生成的多个决策树种挑选最优的那一棵。所以在训练的过程中就会按照不同特征维度的先后划分方式来建立决策树。因此,最优那棵树所对应的特征划分顺序也就代表着特征的重要程度。
看例子:
from sklearn.datasets import load_wine
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
import numpy as np
data=load_wine()
x_train,x_test,y_train,y_test=train_test_split(data.data,data.target,test_size=0.3,random_state=22)
forest=RandomForestClassifier(n_estimators=10,n_jobs=-1,random_state=9)
forest.fit(x_train,y_train)
importances=forest.feature_importances_
print('每个维度对应的重要性因子:\n',importances)
indices = np.argsort(importances)[::-1]# a[::-1]让a逆序输出
print('得到按维度重要性因子排序的维度的序号:\n',indices)
most_import = indices[:3]#取最总要的3个
print(x_train[:,most_import])
>>
每个维度对应的重要性因子:
[0.17340555 0.00990344 0.01416615 0.00880821 0.05553781 0.03865726
0.08544822 0.01149787 0.0478397 0.10337597 0.08948192 0.0930718
0.26880612]
得到按维度重要性因子排序的维度的序号:
[12 0 9 11 10 6 4 8 5 2 7 1 3]
我们可以看到,最重要的是第12维,依次是第0维,9维。
print("%2d) %-*s %f" % (f + 1, 30, feat_labels[f], importances[indices[f]]))
当f=0
时,indices[f]=12
,此时importances[12]
对应的就是最后一个特征,而feat_labels[0]
却指的是第一个特征。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。