有没有办法在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的评论
有一种方法可以导出为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的评论
虽然我迟到了游戏,但以下全面的说明对于想要显示决策树输出的其他人来说非常有用:
安装必要的模块:
graphviz
。我使用了conda的安装包 这里
(推荐结束 pip install graphviz
如 pip
安装没有
包括实际的GraphViz 可执行文件)pydot
通过点子(pip install pydot
)graph
是一个 list
含有 pydot.Dot
目的):from sklearn.datasets import load_iris
from sklearn import tree
from sklearn.externals.six import StringIO
import pydot
clf = tree.DecisionTreeClassifier()
iris = load_iris()
clf = clf.fit(iris.data, iris.target)
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
graph[0].write_pdf("iris.pdf") # must access graph's first element
现在,您将在环境的默认目录中找到“iris.pdf”