首页 文章

确定sklearn决策树中的拆分数量

提问于
浏览
3

我使用"fitctree" -function(链接:https://de.mathworks.com/help/stats/classificationtree-class.html)在Matlab中开发了一个决策树(集合) .

现在我想在python中重建相同的集合 . 因此我使用了带有"DecisionTreeClassifier"的sklearn库(链接:http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html) .

在Matlab中,我通过设置:'MaxNumSplits' - “fitctree”函数中的最大决策分割数来定义每棵树中的最大分割数量 . 因此,可以定义分支节点的数量 .

现在我理解“DecisionTreeClassifier”对象的属性,没有像这样的选项 . 我对吗?我发现控制每棵树中节点数量的是“max_leaf_nodes”,它显然控制了叶子节点的数量 .

其次:“max_depth”完全控制了什么?如果它不是“无”整数“max_depth = int”代表什么?

感谢您的帮助和建议 . 谢谢!

1 回答

  • 3

    据我所知,没有选项可以限制scikit-learn中的分割(节点)总数 . 但是,您可以将 max_leaf_nodes 设置为 MaxNumSplits + 1 ,结果应该是等效的 .

    假设我们的树有 n_split 分割节点和 n_leaf 叶节点 . 如果我们拆分叶节点,我们将其转换为拆分节点并添加两个新的叶节点 . 所以 n_splitsn_leafs 都增加1.我们通常只从根节点( n_splits=0n_leafs=1 )开始,每次拆分都会增加两个数字 . 因此,叶节点的数量始终为 n_leafs == n_splits + 1 .

    至于 max_depth ;深度是树有多少"layers" . 换句话说,深度是根和最远叶节点之间的最大节点数 . max_depth 参数限制此深度 . 如果节点在树下太远,它会阻止进一步拆分节点 . (在做出决定之前,您可以将 max_depth 视为对分割数量的限制 . )

相关问题