我是使用sciki-learn的菜鸟,所以请多多包涵。
我正在查看示例:http : //scikit-learn.org/stable/modules/tree.html#tree
from sklearn.datasets import load_iris from sklearn import tree iris = load_iris() clf = tree.DecisionTreeClassifier() clf = clf.fit(iris.data, iris.target) from StringIO import StringIO out = StringIO() out = tree.export_graphviz(clf, out_file=out) 显然,graphiz文件已可以使用。
但是如何使用graphiz文件绘制树呢?(该示例未详细介绍如何绘制树)。
示例代码和提示非常受欢迎!
谢谢!
更新资料
我正在使用ubuntu 12.04,Python 2.7.3
您运行哪个操作系统?你已经graphviz安装好了吗?
graphviz
在您的示例中,StringIO()对象保存graphviz数据,这是一种检查数据的方法:
StringIO()
... >>> print out.getvalue() digraph Tree { 0 [label="X[2] <= 2.4500\nerror = 0.666667\nsamples = 150\nvalue = [ 50. 50. 50.]", shape="box"] ; 1 [label="error = 0.0000\nsamples = 50\nvalue = [ 50. 0. 0.]", shape="box"] ; 0 -> 1 ; 2 [label="X[3] <= 1.7500\nerror = 0.5\nsamples = 100\nvalue = [ 0. 50. 50.]", shape="box"] ; 0 -> 2 ; 3 [label="X[2] <= 4.9500\nerror = 0.168038\nsamples = 54\nvalue = [ 0. 49. 5.]", shape="box"] ; 2 -> 3 ; 4 [label="X[3] <= 1.6500\nerror = 0.0407986\nsamples = 48\nvalue = [ 0. 47. 1.]", shape="box"] ; 3 -> 4 ; 5 [label="error = 0.0000\nsamples = 47\nvalue = [ 0. 47. 0.]", shape="box"] ; 4 -> 5 ; 6 [label="error = 0.0000\nsamples = 1\nvalue = [ 0. 0. 1.]", shape="box"] ; 4 -> 6 ; 7 [label="X[3] <= 1.5500\nerror = 0.444444\nsamples = 6\nvalue = [ 0. 2. 4.]", shape="box"] ; 3 -> 7 ; 8 [label="error = 0.0000\nsamples = 3\nvalue = [ 0. 0. 3.]", shape="box"] ; 7 -> 8 ; 9 [label="X[0] <= 6.9500\nerror = 0.444444\nsamples = 3\nvalue = [ 0. 2. 1.]", shape="box"] ; 7 -> 9 ; 10 [label="error = 0.0000\nsamples = 2\nvalue = [ 0. 2. 0.]", shape="box"] ; 9 -> 10 ; 11 [label="error = 0.0000\nsamples = 1\nvalue = [ 0. 0. 1.]", shape="box"] ; 9 -> 11 ; 12 [label="X[2] <= 4.8500\nerror = 0.0425331\nsamples = 46\nvalue = [ 0. 1. 45.]", shape="box"] ; 2 -> 12 ; 13 [label="X[0] <= 5.9500\nerror = 0.444444\nsamples = 3\nvalue = [ 0. 1. 2.]", shape="box"] ; 12 -> 13 ; 14 [label="error = 0.0000\nsamples = 1\nvalue = [ 0. 1. 0.]", shape="box"] ; 13 -> 14 ; 15 [label="error = 0.0000\nsamples = 2\nvalue = [ 0. 0. 2.]", shape="box"] ; 13 -> 15 ; 16 [label="error = 0.0000\nsamples = 43\nvalue = [ 0. 0. 43.]", shape="box"] ; 12 -> 16 ; }
您可以将其编写为.dot文件并产生图像输出,如链接的源中所示:
$ dot -Tpng tree.dot -o tree.png (PNG格式输出)
$ dot -Tpng tree.dot -o tree.png