簡體   English   中英

在png或pdf中可視化scikit-learn / sklearn多輸出決策樹回歸

[英]Visualizing scikit-learn/ sklearn multi-output decision tree regression in png or pdf

這是我在stackoverflow上發布的第一個問題所以我為布局中的任何不幸事件道歉等等(建議歡迎)。 非常感謝您的幫助!

我正在嘗試使用多個輸出可視化DecisionTreeRegressor的輸出(如http://scikit-learn.org/stable/auto_examples/tree/plot_tree_regression_multioutput.html#example-tree-plot-tree-regression-multioutput-py中所述 )使用pydot以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") 

編寫pdf會出現以下錯誤:

pydot.InvocationException:程序以狀態終止:1。stderr跟隨:警告:/ tmp / tmpAy7d59:7:字符串超過行尾錯誤:/ tmp / tmpAy7d59:8:第8行附近的語法錯誤:>>> [< << 0.20938667]警告:/ tmp / tmpAy7d59:18:字符串跑過行尾警告:/ tmp / tmpAy7d59:20:字符串跑過行尾

等等更多“字符串跑過終點”錯誤。

我之前從未使用過.dot,但我懷疑多輸出格式可能存在問題。 例如,樹的一部分看起來像這樣:

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 ;
}

我不知道如何解決這個問題,因為這只是我從DecisionTreeRegressor得到的輸出。

我也試過轉換點文件:

dot -Tpng tree.dot -o tree.png

但是這會產生相同的錯誤(字符串超過行尾)我也嘗試使用xdot可視化tree.dot並且給出了相同的錯誤。

按照以下說明查看決策樹。

•使用sklearn,我們可以以點格式導出樹。 “點”格式文件是文本文件。

•可以使用“graphviz”實用程序將“Dot”文件轉換為圖像文件

•從網站下載“graphviz.msi” - http://www.graphviz.org/Download_windows.php

•確保將'\\ graphviz \\ bin'添加到環境變量中的'path'。

可以使用sklearn模塊借助以下命令提取“點”文件

from sklearn import tree
tree.export_graphviz(clf,out_file='tree.dot')

在命令提示符中,執行以下命令將“.dot”文件轉換為“.png”文件。

 dot -Tpng tree.dot -o tree.png

錯誤消息似乎告訴您多行字符串(標簽)存在問題。 如圖所示這里 ,指定在多標簽dot你可以使用\\n ,或者作為描述DOT語言文件

作為可讀性的另一個輔助點,dot允許雙引號字符串使用緊接在換行符之前的反斜杠的標准C約定來跨越多個物理行。

也就是說,當我嘗試使用Graphviz版本2.39.20141007.0445上的dot生成您的繪圖時,它工作得非常好:

在此輸入圖像描述

我找不到格式更改的引用,但是可能值得再次安裝最新版本的Graphviz。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM