编辑 scikit-learn 决策树

Posted

技术标签:

【中文标题】编辑 scikit-learn 决策树【英文标题】:Edit scikit-learn decisionTree 【发布时间】:2017-02-23 07:10:40 【问题描述】:

我想编辑 sklearn 决策树, 例如改变条件或切割节点/叶子等。

但似乎没有功能可以做到这一点,如果我可以导出到文件,请编辑它以导入。

如何编辑决策树?

环境:

Windows10 python3.3 sklearn 0.17.1

【问题讨论】:

【参考方案1】:

即使文档说 DecisionTreeClassifiersplitter kwarg 是一个字符串,您也可以给它一个类。证据:

https://github.com/scikit-learn/scikit-learn/blob/412996f/sklearn/tree/tree.py#L353-L360

看起来您可以继承此处找到的 Splitter 类之一:

https://github.com/scikit-learn/scikit-learn/blob/0.17.X/sklearn/tree/_splitter.pyx

然后做:

my_decision_tree = sklearn.tree.DecisionTreeClassifier(splitter=mySplitter)

【讨论】:

谢谢!我知道像我这样的python初学者很难。【参考方案2】:

如果您正在考虑编辑模型,我认为没有简单的方法可以做到这一点。已经讨论了导出(相当可视化)规则集 [1], [2],但没有讨论导入规则集。但是,当它适合最佳解决方案时,手动尝试编辑规则集有什么意义?再说一遍,如果你真的知道条件,你可以简单地使用一组嵌套的 if-else 条件,而根本不用 scikit-learn。

如果你需要改变分路器的Impl,你可以按照@zemekeneng的建议去做。

【讨论】:

这些链接太棒了。 非常感谢!我明白这很困难。我要制作自己的决策树程序。

以上是关于编辑 scikit-learn 决策树的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn决策树算法类库使用小结

scikit-learn 决策树节点深度

scikit-learn决策树算法类库使用小结

决策树的特征重要性提取(scikit-learn)

是否可以在 scikit-learn 中打印决策树?

scikit-learn 默认使用哪种决策树算法?