Python中Graphviz的輸出問題


不多說,先上代碼~

import sys
from sklearn.datasets import load_iris
from sklearn import tree
from sklearn.externals.six import StringIO
import pydotplus

iris = load_iris()  # 載入數據集
clf = tree.DecisionTreeClassifier()  # 算法模型
clf = clf.fit(iris.data, iris.target)  # 模型訓練
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data,
                         feature_names=iris.feature_names,
                         class_names=iris.target_names,
                         filled=True, rounded=True,
                         special_characters=True)

graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris1.pdf")  # 寫入pdf

 

運行完之后應該長這樣:

 

 

----------------------------------------------------------------------------------------------------------------------------------------------正文開始--------------------------------------------------------------------------------------------------------------------------------------------------------

   你以為這篇文章是在講決策樹Python的代碼實現嗎?那你就錯了。

這是一篇解決Python中 “Graphviz圖片輸出” 出現問題的技術貼。我參考了各位大神的解決方案,不幸的是我在大神方案的最后一個plan里找到了我的問題,幸運的是因此我找到了幾乎所有的解。

所有,當你遇見類似的問題,常規解法如下:

解1:

 

答案是這樣的

簡而言之就是,你可能安裝了一個較新版本的python,所有舊的

import pydot 代碼不適合了,這是你要做的很簡單

要么 選擇裝個 pydotplus包 然后  import pydotplus

要么如下操作

import pydot
iris = load_iris()  # 載入數據集
clf = tree.DecisionTreeClassifier()  # 算法模型
clf = clf.fit(iris.data, iris.target)  # 模型訓練
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data,
                         feature_names=iris.feature_names,
                         class_names=iris.target_names,
                         filled=True, rounded=True,
                         special_characters=True)

graph[0] = pydot.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris1.pdf")  # 寫入pdf

 

解2:

如果上面的操作無法解決,那么你不得不檢查

1.graphviz軟件你有沒有下載,沒有的話點下面的鏈接即可

http://www.graphviz.org/download/

下完軟件記得 安裝 graphviz包

解3:

如果這時候還沒有解決問題,那八成是你的環境變量沒有設好

 

如果還沒有解決你的問題,那。。。

歡迎私信我,一起討論

 

 

以上

 

 

參考

1. https://stackoverflow.com/questions/38176472/graph-write-pdfiris-pdf-attributeerror-list-object-has-no-attribute-writ

2. https://stackoverflow.com/questions/18438997/why-is-pydot-unable-to-find-graphvizs-executables-in-windows-8


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM