Python3.5在jupyter中使用graphviz畫決策樹(包括graphviz-2.38.msi的安裝)


異常1:ExecutableNotFound: failed to execute [‘dot’, ‘-Tsvg’], make sure the Graphviz executables are on your systems

異常2:CalledProcessError: Command '['dot', '-Tsvg']' returned non-zero exit status 1. [stderr: b"Error: <stdin>: syntax error in line 1 near 'None'\r\n"]

是否在使用graphviz遇上這兩個問題?恭喜你,遇上才哥不迷路。

  首先異常1的原因是只安裝了Python的graphviz第三方接口模塊並沒有安裝graphviz畫圖軟件

  異常2的原因主要為安裝的graphviz軟件不兼容當前的Python解釋器或當前的graphviz第三個接口模塊,最好的解決方法是換一個低版本的graphviz軟件

    網上介紹異常二的另外一個原因是沒有在tree.export_graphviz中添加out_file=None參數,(我個人測試是沒有問題的,沒有辦法的時候可以試一下(如上白話文介紹沒看懂的看下面代碼)

今天想畫一下決策樹,結果發現graphviz不僅僅是安裝一下模塊這么簡單,首先,graphviz是一個使用dot語言的畫圖編輯器,當然也可以執行dot文件。於是要想畫決策樹可以有多種方法。

1、使用Python生成dot文件后,通過graphviz的gvedit.exe可以圖形化界面操作打開dot文件,然后就可以生成決策樹圖形

2、可以通過python的第三方模塊,graphviz接口調用本地安裝的graphviz軟件,直接生成決策樹圖形

下面我們就來介紹一下如何在Python中使用graphviz畫一顆決策樹:(在網上看了許多博客都沒有找到一個完整的介紹,失望!!!)

環境:

  系統:win7

  Python解釋器版本:Python3.5,(Python解釋器向下兼容,3.5以上均可)

  編輯環境:jupyter notebook,(在pycharm中運行后生成的是pdf文件,中文編碼問題需要自己解決)

  graphviz版本:graphviz-2.38.msi,(實測現在官網發布的2.44.1安裝后在Python3.5中運行時總會遇到CalledProcessError異常,所有建議通過graphviz-2.38.msi安裝)

   以下提供graphviz-2.38安裝包和中文教程

    鏈接:https://pan.baidu.com/s/1y8-Owj9UiwrWcyJ7VwY_4A
    提取碼:q6z0

1、首先我們需要安裝graphviz-2.38軟件:

  a.下載安裝包后,傻瓜式安裝,記住安裝路徑即可

  b.安裝完成后,添加環境變量:(注意路徑為自己安裝路徑下的bin目錄)

    

   c.測試:(在cmd命名窗口輸入dot -version)顯示窗口如下,恭喜安裝成功

  

  安裝完成后我們可以使用圖形化界面來打開dot文件或者使用dot語言編寫圖形:

  可以通過運行gvedit.exe文件打開圖形化操作界面:

  

2、然后我們需要安裝graphviz第三方模塊:

  命令:pip install graphviz -i https://pypi.tuna.tsinghua.edu.cn/simple(這里網上各種介紹說安裝python-graphviz或者是pygraphviz模塊,但個人實測只能安裝graphviz,其他兩個模塊安裝報錯)

  安裝完成后即可在Python中調用畫決策樹

from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
wine = load_wine()
#區分數據集和測試集
Xtrain,Xtest,Ytrain,Ytest = train_test_split(wine.data,wine.target,test_size=0.3)

clf = tree.DecisionTreeClassifier(criterion="entropy")
clf = clf.fit(Xtrain,Ytrain)
score = clf.score(Xtest,Ytest)
feature_name = ['酒精','蘋果酸','','灰的鹼性','','總酚','類黃酮','非黃烷類酚類','花青素','顏色強度','色調','稀釋葡萄酒','脯氨酸']

import graphviz
#輸出生成的決策樹
dot_data = tree.export_graphviz(clf
                               ,feature_names = feature_name
                               ,class_names = ["琴酒","雪莉","貝爾摩德"]
                               ,filled=True
                               ,rounded=True
                               ,out_file=None #---->(異常二的解決方法二)
                                ,special_characters="utf-8"
                               )

graph = graphviz.Source(dot_data)
graph.view()

 

  切記重啟一下開啟jupyter notebook編輯頁面的cmd窗口。

 


免責聲明!

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



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