Scikit-Learn 自定义决策树叶子类型

标签 scikit-learn

使用 sci-kit learn 时是否可以定义自定义决策树的叶子类型?

我想使用更复杂的叶子来训练随机森林,例如包含线性回归量或高斯分布的叶子。这可能需要定义自定义叶类型并实现新的拆分标准。那可能吗?

谢谢你。

最佳答案

这是可以做到的,但不是很明智。

sklearn 中的决策树是用 Cython(C++ 和 Python 的混合体)编写的,并使用预先确定的 Cython 拆分标准列表。这使得 sklearn 树非常快,但不容易定制。

如果您用纯 Python 编写自己的叶子和拆分器,则必须将它们与 sklearn Cython 代码集成。这是可能的,但可能是漫长而艰难的。最后,你的代码会很慢,因为它会在每个节点从 C++ 调用 Python。因此,从头开始编写树构建算法会更便宜。

如果您非常认真地努力,您可以在 Cython 中编写叶子和拆分器,使其易于与 scikit-learn 集成,并且速度一样快。但是这个解决方案不会那么定制,因为您将无法从 Python 添加另一个叶模型。

如果你想快速尝试这样的模型,你可以在 Weka 中使用 M5 算法。

如果你问我的意见,我几乎不明白为什么你可能想要在随机森林的每一片叶子中添加更复杂的模型——它已经足够复杂了。

关于Scikit-Learn 自定义决策树叶子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34209485/

相关文章:

python - 使用 GridSearchCV 在 CV 期间内部缩放训练数据以进行超参数优化

python - 按组监督学习随机森林

python - 在 Python 中使用自定义距离函数对任意对象进行聚类

python-2.7 - Scikit-learn KNN 中的归一化

python - NMF 作为 Python Scikit 中的聚类方法

scikit-learn - sklearn : Regression models on sparse data?

python - 图像直方图的高斯混合模型

python-3.x - 使用 NaiveBayesClassifier 对文本进行分类

python - 如何显示每个被向量化的单词的实际数量

python - 交叉验证分类错误