不多說,先上代碼~
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
