随机森林中每棵树的每个特征的特征重要性计算
Posted
技术标签:
【中文标题】随机森林中每棵树的每个特征的特征重要性计算【英文标题】:Feature importance calculation for every features to every tree in Random Forest 【发布时间】:2019-09-01 20:50:33 【问题描述】:我使用python库sklearn.ensemble.RandomForestClassifier
。
我想知道所有树的每个特征的特征重要性。假设,我有P
特征和M
树。
我想计算PxM
矩阵,其中每个特征的特征重要性都计算到每棵树。
Here 是 sklearn 用于随机森林特征重要性的源代码。在这种方法中,我认为all_importances
变量是PxM 矩阵。但是如何访问该变量?
提前致谢。
【问题讨论】:
【参考方案1】:您可以使用.estimators_
访问各个树,然后调用feature_importances_
这是一个例子:
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=1000, n_features=4,
n_informative=2, n_redundant=0,
random_state=0, shuffle=False)
clf = RandomForestClassifier(n_estimators=5, max_depth=2,
random_state=0)
clf.fit(X, y)
feature_imp_ = [tree.feature_importances_.T for tree in clf.estimators_]
输出:
[array([0.02057642, 0.96636638, 0. , 0.01305721]),
array([0.86128406, 0. , 0.13871594, 0. ]),
array([0.00471007, 0.98648234, 0. , 0.00880759]),
array([0.02730208, 0.97269792, 0. , 0. ]),
array([0.65919044, 0.34080956, 0. , 0. ])]
【讨论】:
以上是关于随机森林中每棵树的每个特征的特征重要性计算的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python scikit-learn 中输出随机森林中每棵树的回归预测?