Anaconda3安裝graphviz失敗及解決方法

Graphviz 是一個繪圖工具集, 可以用 The DOT Language 的 DSL 來繪圖。用 dot 寫好腳本之後,使用不同的佈局引擎來對腳本解析,生成圖片,支持 PNG、PDF 等格式。Graphviz 有好幾個佈局引擎,一般使用的有dot (有向圖) 和 circo(環形佈局),其他的較少使用。

​ Graphviz 包含 3 種圖形元素,圖(graph)節點(node)邊(edge)。每個元素都可以具有各自的屬性,用來定義字體,樣式,顏色,形狀等。

安裝

  • 安裝graphviz進程

    1
    2
    3
    4
    5
    
     Mac
    brew install graphviz
    
     ubuntu
    sudo apt-get install graphviz
    

    或者到官網下載頁面中, 找到對應平臺的安裝包安裝。

  • 安裝python-graphviz模塊

    1
    
    sudo pip install graphviz
    

問題描述:

 

基本用法

通過實例化對象創建圖形

以下是基於sklearn庫的CART算法示例代碼。通過構建決策樹(採用Gini作爲指標)對隨機生成(通過np.random.randint方法)的數字進行分類,自變量X爲100×4的矩陣,隨機生成的數字大於10,因變量Y爲大於2的100×1矩陣。樹的最大深度限制爲3層,訓練完成之後將樹可視化顯示。

import numpy as np
import random
from sklearn import tree
from graphviz import Source
np.random.seed(42)
X =np.random.randint(10,size=(100,4))
Y =np.random.randint(2,size=100)
a =np.column_stack((Y,X))
clf =tree.DecisionTreeClassifier(criterion='gini',max_depth=3)
clf =clf.fit(X,Y)
graph =Source(tree.export_graphviz(clf,out_file=None))
graph.format ='png'
graph.render('cart_tree',view=True)

 jupyter notebook運行,此時出現問題:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xd5 in position 2: invalid continuation byte該問題表明解碼器錯誤。

嘗試解決方法:

1.查看Anaconda3\envs\tensorflow1\Lib\site-packages\graphviz\.compat.py

加入以下代碼:

PY2 = sys.version_info[0] == 2
if not PY2:
    text_type = str
    string_types = (str,)
    unichr = chr
    int_types = (int,)
    iteritems = lambda x: iter(x.items())
else:
    text_type = unicode
    string_types = (str, unicode)
    unichr = unichr
    int_types = (int, long)
    iteritems = lambda x: x.iteritems()

未成功

2.pip uninstall graphviz
pip install graphviz

或者

conda uinstall graphviz

conda install graphviz (如果報錯,安裝python-graphviz模塊: conda install python-graphviz)

再次運行:成功

生成cart_tree.png

​ 基本思想:從根節點出發,測試不同的特徵屬性,按照結果的不同選擇分支,最終落到某一葉子節點,獲得分類結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章