随机森林模型sklearn_使用python+sklearn实现随机森林的特征重要性

本文通过一个示例展示了如何使用Python的sklearn库实现随机森林模型,并评估特征的重要性和在树间的差异性。结果显示,三个特征对于分类任务具有显著信息价值,而其他特征则不重要。
摘要由CSDN通过智能技术生成

本示例显示了使用随机森林来评估特征在人工分类任务中的重要性。下图中的红色柱形(red bars)表示随机森林的特征重要性,以及它们在树间的可变性(inter-trees variability)。

不出所料,该图表明了3个特征是有信息的,而其余特征则没有。

d060166812a0dea9dba8b08570bc451e.png

sphx_glr_plot_forest_importances_001

输出:

Feature ranking:1. feature 1 (0.295902)2. feature 2 (0.208351)3. feature 0 (0.177632)4. feature 3 (0.047121)5. feature 6 (0.046303)6. feature 8 (0.046013)7. feature 7 (0.045575)8. feature 4 (0.044614)9. feature 9 (0.044577)10. feature 5 (0.043912)

print(__doc__)import numpy as npimport matplotlib.pyplot as pltfrom sklearn.datasets import make_classificationfrom sklearn.ensemble import ExtraTreesClassifier# 使用3个有信息的特征构建分类任务
X, y = make_classification(n_samples=1000,
                           n_features=10,
                           n_informative=3,
                           n_redundant=0,
                           n_repeated=0,
                           n_classes=2,
                           random_state=0,
                           shuffle=False)# 建立随机森林模型并计算特征重要性
forest = ExtraTreesClassifier(n_estimators=250,
                              random_state=0)
forest.fit(X, y)
importances = forest.feature_importances_
std = np.std([tree.feature_importances_ for tree in forest.estimators_],
             axis=0)
indices = np.argsort(importances)[::-1]# 打印特征等级
print("Feature ranking:")for f in range(X.shape[1]):
    print("%d. feature %d (%f)" % (f + 1, indices[f], importances[indices[f]]))# 绘制随机森林的特征重要性
plt.figure()
plt.title("Feature importances")
plt.bar(range(X.shape[1]), importances[indices],
       color="r", yerr=std[indices], align="center")
plt.xticks(range(X.shape[1]), indices)
plt.xlim([-1, X.shape[1]])
plt.show()

脚本的总运行时间:(0分钟0.552秒)

估计的内存使用量: 8 MB

835047d0dcf45152cacb3ead2c1804dc.png

下载Python源代码:plot_adaboost_regression.py

下载Jupyter notebook源代码:plot_adaboost_regression.ipynb

由Sphinx-Gallery生成的画廊

14d4f8b323f0826aacf64fc3c5bfc4f9.png ☆☆☆为方便大家查阅,小编已将scikit-learn学习路线专栏文章统一整理到公众号底部菜单栏,同步更新中,关注公众号,点击左下方“系列文章”,如图:

426aeef505e47a442b9893f7b0d26ce7.png

欢迎大家和我一起沿着scikit-learn文档这条路线,一起巩固机器学习算法基础。(添加微信:mthler,备注:sklearn学习,一起进【sklearn机器学习进步群】开启打怪升级的学习之旅。)

8cd830fd9c37765a8b7e3e07d487b360.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值