本示例显示了使用随机森林来评估特征在人工分类任务中的重要性。下图中的红色柱形(red bars)表示随机森林的特征重要性,以及它们在树间的可变性(inter-trees variability)。
不出所料,该图表明了3个特征是有信息的,而其余特征则没有。
输出:
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
下载Python源代码:plot_adaboost_regression.py
下载Jupyter notebook源代码:plot_adaboost_regression.ipynb
由Sphinx-Gallery生成的画廊
☆☆☆为方便大家查阅,小编已将scikit-learn学习路线专栏文章统一整理到公众号底部菜单栏,同步更新中,关注公众号,点击左下方“系列文章”,如图:欢迎大家和我一起沿着scikit-learn文档这条路线,一起巩固机器学习算法基础。(添加微信:mthler,备注:sklearn学习,一起进【sklearn机器学习进步群】开启打怪升级的学习之旅。)