python - 确定 sklearn 决策树中的 split 量

标签 python scikit-learn decision-tree

我使用“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 中,我通过设置定义了每棵树的最大 split 量: 'MaxNumSplits' - “fitctree”函数中决策 split 的最大数量。 因此,可以定义分支节点的数量。

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

其次:“max_depth”究竟控制什么?如果不是“无”,整数“max_depth = int”代表什么?

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

最佳答案

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

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

至于max_depth;深度是树有多少“层”。换句话说,深度是根节点和最远叶节点之间的最大节点数。 max_depth 参数限制了这个深度。如果节点在树的下方太远,它可以防止节点进一步 split 。 (您可以将 max_depth 视为在做出决定之前对拆分次数的限制。)

关于python - 确定 sklearn 决策树中的 split 量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49672484/

相关文章:

python - 如何编写在 Postgres 列中查找单词的 Django 查询?

python - 在某些情况下,Python 中 xgb.train 和 xgb.XGBRegressor 之间的差异是值

python-2.7 - 尝试堆叠时出现类型错误

rpart节点赋值

numpy - 值错误: setting an array element with a sequence with Decision Tree where all the rows have equal elements?

python - Django Rest Framework 中的嵌套序列化程序 "Through model"

python - 如何使用Python查找debian软件包信息

使用类型作为函数参数的 Pythonic 方式

machine-learning - 亲和性传播首选项初始化

algorithm - 给定一组规则生成决策树