python的資料視覺化 graphviz pydot安裝配置(win10)
1、下載安裝http://www.graphviz.org/pub/graphviz/stable/windows/graphviz-2.38.msi
要是原連結下載不了,可以下我這個:http://download.csdn.net/detail/shouwangzhelv/9492517
2、pip install pydot
我這裡安裝完直接就可以import,沒有錯誤。據說有的報錯:不能匯入dot_parser,這個可以直接安裝:pip install -U pydot pyparsing==1.5.7
3、為了避免出錯,我添加了系統路徑:C:\Program Files (x86)\Graphviz2.38\bin 和 C:\Program Files (x86)\Graphviz2.38
然而還是出錯了,說說問題及解決吧:
1、pywintypes.error: (2, 'RegOpenKeyEx', ...) 應該是沒找到登錄檔,直接修改模組原始檔讓它找到就好了。
解決:修改Python2.7\Lib\site-packages\pydot.py,這是修改完的了,原檔案沒儲存。
其實這個檔案前面原來有method1和2,2是給linux用的(你的檔案裡應該有這些內容),對比了一下method1和3,發現3好點,其實不管method幾,主要是為了獲得path和progs,就找一種合適的方法能正確獲得這兩就好了。選用method3,作了如下修改,一切都正常了。。其實就是,不用他自動獲取path了,直接給他一個path就好了,然後path對了, progs
= __find_executables(path),progs也就對了。
def find_graphviz():
# Method 3 (Windows only)
#
if os.sys.platform == 'win32':
# Try and work out the equivalent of "C:\Program Files" on this
# machine (might be on drive D:, or in a different language)
#
if False:#os.environ.has_key('PROGRAMFILES'):
# Note, we could also use the win32api to get this
# information, but win32api may not be installed.
path = os.path.join(os.environ['PROGRAMFILES'], 'ATT', 'GraphViz', 'bin')
else:
#Just in case, try the default...
path = r"C:\Program Files (x86)\Graphviz2.38\bin"
progs = __find_executables(path)
if progs is not None :
#print "Used default install location"
return progs
for path in (
'/usr/bin', '/usr/local/bin',
'/opt/bin', '/sw/bin', '/usr/share',
'/Applications/Graphviz.app/Contents/MacOS/' ):
progs = __find_executables(path)
if progs is not None :
#print "Used path"
return progs
# Failed to find GraphViz
#
return None
問題2:pydot.InvocationException: GraphViz's executables not found
跟上面一個問題,按上面改了這個就不會出現了。
至此,graphviz和pydot就安裝完了。
下面說說用法,畫個決策樹的圖(預設你已經裝了sklearn模組):
python原始碼:
#encoding:utf8 #Author:lvpengbin import sys reload(sys) sys.setdefaultencoding("utf-8") from sklearn.datasets import load_iris from sklearn import tree from sklearn.externals.six import StringIO 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) graph = pydot.graph_from_dot_data(dot_data.getvalue()) graph.write_pdf("iris.pdf")#寫入pdf
iris.pdf: