Python 以png或pdf格式可视化scikit learn/sklearn多输出决策树回归

Python 以png或pdf格式可视化scikit learn/sklearn多输出决策树回归,python,scikit-learn,decision-tree,dot,pydot,Python,Scikit Learn,Decision Tree,Dot,Pydot,这是我在stackoverflow上发布的第一个问题,所以我为布局等方面的任何失误道歉(欢迎建议)。非常感谢你的帮助 我试图使用pydot将DecisionTreeGressor的输出可视化为png或pdf格式的多个输出(如中所述) 我尝试的代码如下所示: ... dtreg = tree.DecisionTreeRegressor(max_depth=3) dtreg.fit(x,y) tree.export_graphviz(dtreg, out_file='tree.dot') #pri

这是我在stackoverflow上发布的第一个问题,所以我为布局等方面的任何失误道歉(欢迎建议)。非常感谢你的帮助

我试图使用pydot将DecisionTreeGressor的输出可视化为png或pdf格式的多个输出(如中所述)

我尝试的代码如下所示:

...
dtreg = tree.DecisionTreeRegressor(max_depth=3)
dtreg.fit(x,y)

tree.export_graphviz(dtreg, out_file='tree.dot') #print dotfile

dot_data = StringIO()
tree.export_graphviz(dtreg, out_file=dot_data)
print dot_data.getvalue()
pydot.graph_from_dot_data(dot_data.getvalue()).write_pdf("pydot_try.pdf") 
digraph Tree {
0 [label="X[0] <= 56.0000\nmse = 0.0149315126135\nsamples = 41", shape="box"] ;
1 [label="X[0] <= 40.0000\nmse = 0.0137536911947\nsamples = 25", shape="box"] ;
0 -> 1 ;
2 [label="X[0] <= 24.0000\nmse = 0.0152142545276\nsamples = 21", shape="box"] ;
1 -> 2 ;
3 [label="mse = 0.0140\nsamples = 15\nvalue = [[ 0.83384667]
 [ 0.20938667]
 [ 0.08511333]
 [ 0.04234667]
 [ 0.08158   ]
 [ 0.17948667]
 [ 0.03616   ]
 [ 0.00995333]
 [ 0.99529333]
 [ 0.13715333]
 [ 0.10294667]
 [ 0.06632667]]", shape="box"] ;
2 -> 3 ;
4 [label="mse = 0.0170\nsamples = 6\nvalue = [[ 0.69588333]
 [ 0.20275   ]
 [ 0.0953    ]
 [ 0.0436    ]
 [ 0.1216    ]
 [ 0.17248333]
 [ 0.04393333]
 [ 0.01178333]
 [ 0.99913333]
 [ 0.12348333]
 [ 0.10838333]
 [ 0.06973333]]", shape="box"] ;
2 -> 4 ;
}
编写pdf会出现以下错误:

pydot.InvocationException:程序终止,状态为1。标准错误 如下所示:警告:/tmp/tmpAy7d59:7:字符串超出了行尾错误:
/tmp/tmpAy7d59:8:第8行上下文附近的语法错误:>>>[错误消息似乎告诉您多行字符串(标签)有问题。如图所示,要在
中指定多行标签,可以使用
\n
,或者如中所述:

作为可读性的另一个帮助,dot允许使用双引号字符串 使用a的标准C约定跨越多条物理线 紧靠换行符前面的反斜杠

也就是说,当我尝试在Graphviz版本
2.39.20141007.0445
上使用
dot
生成绘图时,效果非常好:


我找不到有关格式更改的参考,但是,如果安装了最新版本的Graphviz,可能值得再次尝试。

按照以下说明查看决策树

•使用sklearn,我们可以以点格式导出树。“点”格式文件是文本文件

•“点”文件可以使用“graphviz”实用程序转换为图像文件

•从网站下载“graphviz.msi”——

•确保将“\graphviz\bin”添加到环境变量中的“路径”中

借助以下命令,可以使用sklearn模块提取“点”文件

from sklearn import tree
tree.export_graphviz(clf,out_file='tree.dot')
在命令提示符下,执行以下命令以将“.dot”文件转换为“.png”文件

 dot -Tpng tree.dot -o tree.png

同样的代码现在也适用于我。我不确定发生了什么/修复了什么,但感谢您指出这一点!
 dot -Tpng tree.dot -o tree.png