有没有办法从随机森林模型中提取树深度?

Posted

技术标签:

【中文标题】有没有办法从随机森林模型中提取树深度?【英文标题】:Is there a way to extract Tree depths from a Random Forest model? 【发布时间】:2019-10-07 21:44:19 【问题描述】:

我创建了一个随机森林分类器,我正在尝试生成我的随机森林模型的树深度的直方图。我只是无法提取森林中每棵树的深度。

我的 RF 模型称为“RF_optimized”,我尝试使用下面的代码来迭代我的树并可视化哪个有效。我浏览了estimators_export_graphviz 文档,但似乎没有办法提取树的实际深度。

from sklearn import tree
from sklearn.tree import export_graphviz
from sklearn.externals.six import StringIO

# Create a string buffer to write to (a fake text file)
f = StringIO()

i_tree = 0
for tree_in_forest in RF_optimised.estimators_:

    export_graphviz(tree_in_forest,out_file=f,
    #feature_names=col,
    filled=True,
    rounded=True,
    proportion=True)

    graph = pydotplus.graph_from_dot_data(f.getvalue())
    display(Image(graph.create_png()))

我需要一个函数来遍历我的随机森林中的树并将树的深度存储在列表或数据框中,以便稍后生成直方图。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

在解释器中的一些探索表明,每个 Tree 实例都有一个 max_depth 参数,这似乎是我正在寻找的 - 再说一遍,它没有记录。

[estimator.tree_.max_depth for estimator in RF_optimised.estimators_]

为我做了诀窍:)

【讨论】:

max_depth 也应该以estimator.max_depth 的形式出现在估算器中,这在DecisionTreeClassifier 中有记录

以上是关于有没有办法从随机森林模型中提取树深度?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Weka GUI 中获取随机森林生成的树模型?

R:任何可以控制树的最大深度的随机森林包?

有没有一种方法可以用决策树/随机森林进行迁移学习?

随机森林为啥不会过度拟合

从随机森林中提取一棵树,然后使用提取的树进行预测

R语言︱决策树族——随机森林算法