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

标签 python scikit-learn

有没有办法在 scikit-learn 中打印经过训练的决策树?我想为我的论文训练一个决策树,我想把树的图片放在论文中。这可能吗?

最佳答案

有一种导出为graph_viz格式的方法:http://scikit-learn.org/stable/modules/generated/sklearn.tree.export_graphviz.html

因此来自在线文档:

>>> from sklearn.datasets import load_iris
>>> from sklearn import tree
>>>
>>> clf = tree.DecisionTreeClassifier()
>>> iris = load_iris()
>>>
>>> clf = clf.fit(iris.data, iris.target)
>>> tree.export_graphviz(clf,
...     out_file='tree.dot')    

然后你可以使用 graph viz 加载它,或者如果你安装了 pydot 那么你可以更直接地执行此操作:http://scikit-learn.org/stable/modules/tree.html

>>> from sklearn.externals.six import StringIO  
>>> import pydot 
>>> dot_data = StringIO() 
>>> tree.export_graphviz(clf, out_file=dot_data) 
>>> graph = pydot.graph_from_dot_data(dot_data.getvalue()) 
>>> graph.write_pdf("iris.pdf") 

将生成 svg,无法在此处显示,因此您必须点击链接:http://scikit-learn.org/stable/_images/iris.svg

更新

自从我第一次回答这个问题以来,行为似乎发生了变化,现在它返回一个 list,因此你会得到这个错误:

AttributeError: 'list' object has no attribute 'write_pdf'

首先,当您看到这个时,只需要打印对象并检查对象,很可能您想要的是第一个对象:

graph[0].write_pdf("iris.pdf")

感谢@NickBraunagel 的评论

关于python - 是否可以在 scikit-learn 中打印决策树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25274673/

相关文章:

python - [ :-1] mean/do in python? 是什么意思

python - 在 pandas 数据帧上创建滚动自定义 EWMA

python - sklearn : Have an estimator that filters samples

python - 为什么 'return self' 返回 None?

python - 如何检查用户是否订阅了 Django 模板中的产品

python - 如何一致地缩放数据帧 MinMaxScaler() sklearn

python - 在 python/scikit/numpy 中替代 r 的指数平滑状态空间模型

python - 如何使用 sklearn 管道和 FeatureUnion 选择多个(数字和文本)列进行文本分类?

python - 在 Python 中使用 Selenium 滚动模态窗口

python - 获取每个文档的最高术语 - scikit tf-idf