2013-10-27 121 views
4

我期望這段代碼創建樹的PDF圖形。在sklearn Python的決策樹中製作pydot圖

from sklearn import datasets,tree 
import StringIO 
import pydot 
from sklearn.externals.six import StringIO 

iris = datasets.load_iris() 

clf = tree.DecisionTreeClassifier() 
clf = clf.fit(iris['data'],iris['target']) 

dot_data = StringIO.StringIO() 
tree.export_graphviz(clf, out_file=dot_data) 
graph = pydot.graph_from_dot_data(dot_data.getvalue()) 
graph.write_pdf("iris.pdf") 

有沒有辦法做到我想要的雖然pydot?這種方式是死路一條。

進一步解釋問題,代碼在最後一條語句中失敗。 graph.write_pdf()正在graph.progs()中尋找Graphviz,但是那裏沒有條目。錯誤消息說沒有找到Graphviz可執行文件。

無論如何,我可以通過在DOS終端中調用dot.exe命令來使用pdf文件,但最好使用pydot來執行此步驟。

+0

你是什麼意思「這種方式是死路一條」?在運行時會得到什麼錯誤消息和Python追溯? – ogrisel

回答

3

問題似乎是您的PATH語句不包含對GraphViz的引用 - 因此您的pydot模塊找不到它。要驗證這是問題,請從Windows cmd窗口中鍵入「PATH」。

C:\用戶\羅恩弗雷德裏克斯>路徑PATH = C:\程序 文件\的CollabNet \ Subversion客戶端; C:\ Program Files文件 (86)\ Graphviz2.34 \ BIN

上面的簡化路徑輸出顯示我的系統在我的PATH中包含Graphviz。如果您的PATH中沒有Graphviz,請查找如何將Graphviz安裝到您的用戶路徑中的搜索結果SO搜索此字符串「Graphviz可執行文件未找到」