BeC*_*ous 4 python decision-tree scikit-learn
我使用“fitctree”函数(链接:https ://de.mathworks.com/help/stats/classificationtree-class.html)在 Matlab 中开发了一个决策树(集成)。
现在我想在 python 中重建相同的集合。因此,我将 sklearn 库与“DecisionTreeClassifier”(链接:http ://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html )一起使用。
在 Matlab 中,我通过设置定义了每棵树中的最大分割数: 'MaxNumSplits'——“fitctree”函数中的最大决策分割数。因此,由此可以定义分支节点的数量。
现在,当我了解“DecisionTreeClassifier”对象的属性时,没有任何这样的选项。我对吗?我发现控制每棵树中节点数量的所有内容是“max_leaf_nodes”,它显然控制着叶节点的数量。
其次:“max_depth”究竟控制什么?如果不是“无”整数“max_depth = int”代表什么?
我感谢您的帮助和建议。谢谢!
据我所知,没有选项可以限制 scikit-learn 中的拆分(节点)总数。但是,您可以设置max_leaf_nodes为MaxNumSplits + 1并且结果应该是等效的。
假设我们的树有n_split分裂节点和n_leaf叶节点。如果我们分裂一个叶子节点,我们把它变成一个分裂节点并添加两个新的叶子节点。因此n_splits,n_leafs两者都增加 1。我们通常只从根节点 ( n_splits=0, n_leafs=1) 开始,每次拆分都会增加两个数字。因此,叶节点的数量总是n_leafs == n_splits + 1。
至于max_depth; 深度是树有多少“层”。换句话说,深度是根节点和最远叶节点之间的最大节点数。该max_depth参数限制了这个深度。如果节点离树太远,它可以防止节点进一步分裂。(max_depth在做出决定之前,您可以将其视为对拆分数量的限制。)
| 归档时间: |
|
| 查看次数: |
2440 次 |
| 最近记录: |