使用 sklearn,我如何找到决策树的深度?

Posted

技术标签:

【中文标题】使用 sklearn,我如何找到决策树的深度?【英文标题】:Using sklearn, how do I find depth of a decision tree? 【发布时间】:2019-06-27 04:31:29 【问题描述】:

我正在使用 sklearn 训练决策树。当我使用时:

dt_clf = tree.DecisionTreeClassifier()

max_depth 参数默认为None。根据文档,如果max_depthNone,则节点会被扩展,直到所有叶子都是纯的或直到所有叶子包含的样本少于min_samples_split

拟合我的模型后,我如何找出 max_depth 的实际含义? get_params() 函数没有帮助。拟合后,get_params() 仍然显示None

如何获得max_depth 的实际号码?

文档:https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html

【问题讨论】:

【参考方案1】:

访问底层Tree对象的max_depth

from sklearn import tree
X = [[0, 0], [1, 1]]
Y = [0, 1]
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)
print(clf.tree_.max_depth)
>>> 1

您可以使用以下方法从底层树对象中获得更多可访问的属性:

help(clf.tree_)

这些包括max_depthnode_count 和其他较低级别的参数。

【讨论】:

很好的答案!喜欢它。【参考方案2】:

根据文档https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.get_depth 的答案是使用tree.get_depth() 函数。

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review

以上是关于使用 sklearn,我如何找到决策树的深度?的主要内容,如果未能解决你的问题,请参考以下文章

sklearn中的交叉验证+决策树

sklearn决策树的BFS遍历

决策树的深度取决于啥?

如何获得决策树的 ROC 曲线?

机器学习-------sklearn决策树分析

sklearn实现决策树算法