我们可以从这里的sklearn文档,或者从我的实验中看到,decisiontreecclassifier的所有树结构都是二叉树。无论标准是基尼还是熵,每个decisiontreecclassifier节点只能有0或1或2个子节点。
但从决策树介绍幻灯片(第3页)来看,理论决策树的每个节点可以有2个子节点以上。
所以我的问题是为什么决策树结构只有二叉树(每个decisiontreecclassifier节点只能有1或2个子节点)对于sklearn decisiontreecclassifier ?我们是否可以为decisiontreecclassifier获得具有2个子节点以上的树结构?
这是因为sklearn的方法是使用数值特征,而不是分类,当你有数值特征时,构建一个可以有任意数量阈值的拆分规则是相对困难的(这需要产生超过2个孩子)。另一方面,对于分类特征(在提供的幻灯片中使用),另一种可能的选择是具有尽可能多的子值。这两种方法都有自己的问题(当你有很多可能的值时,分类方法使它几乎难以处理),并且数值需要特定的特征编码(分类的一个热,这有效地意味着你仍然可以表达相同的树,但不是有3个子[狗,猫,人]的"物种",你将有更深入的决策树:[狗,不是狗],[不是狗而是猫,不是狗,不是猫而是人])。
所以简短的答案是no,你不能在这个实现中实现超过2个子节点,但这并不是真正的限制。