使用sci-kit learn时是否可以定义自定义决策树叶类型?
我想使用更复杂的叶子训练随机森林,例如含有线性回归量或高斯的叶子。这可能需要定义自定义叶类型并实现新的拆分标准。这可能吗?
谢谢。
答案 0 :(得分:1)
这是可能的,但不是很明智。
sklearn中的决策树是用Cython(C ++和Python的混合)编写的,并使用预定的Cython分割标准列表。这使得sklearn树非常快,但不容易定制。
如果您使用纯Python编写自己的叶子和拆分器,则必须将它们与sklearn Cython代码集成。这是可能的,但可能很长很难。最后,你会有慢代码,因为它会在每个节点从C ++调用Python。因此,从头开始编写树构建算法会更便宜。
如果你对自己的努力非常认真,可以在Cython中编写树叶和分割器,以便与scikit-learn和快速完成整合。但是这个解决方案不会那么自定义,因为你将无法从Python中添加另一个叶子模型。
如果您想快速尝试这样的模型,可以在Weka中使用M5算法。
如果你问我的意见,我几乎不明白为什么你可能想在随机森林的每个叶子中添加更复杂的模型 - 它已经足够复杂了。