在決策樹模型的部署中,使用sklearn庫提供的現成方案是省事的方法,但為對其進行可視化操作,使用pydotplus-Graphviz庫必不可少-如何正常使用該庫給我造成了一些困擾。
目標是決策樹模型的繪制,最終輸出如圖:
CartTree_by_Graphviz.png
在最終解決問題并實現如圖決策樹模型的輸出后,我覺得有必要記錄問題解決的步驟,以期有助于其他情況下類似問題的解決,同時也為自己留下備忘。
默認已經完成CartTree模型本身的訓練過程,在sklearn框架的基礎上我們擁有Tree對象。接下來我們要做的事情有幾步:
1、安裝Graphviz軟件。在2018年11月16日可供使用的官方鏈接如下:
點擊圖中框紅msi文件,運行,注意安裝路徑(例如C:/Program Files (x86)/Graphviz2.38)
2、安裝成功后,配置環境變量,包括C:/Program Files (x86)/Graphviz2.38和C:/Program Files (x86)/Graphviz2.38/bin,注意第二個變量,尤其關鍵。環境變量的配置可以通過windows+s組合鍵調出搜索框,搜索關鍵詞(環境變量配置)找到,或者控制面板中找。
在我的實踐中,執行以上操作后全部無效。
原因不明(我也不知道為什么......),在同事的幫助下,通過import os,os.environ["path"]+=os.pathsep+"路徑"代碼插入的方式運行成功。(這個文檔最有價值的地方就在這里。注意os庫應具備。)
3、Graphviz軟件安裝成功后,即可以正常方式安裝Python庫:pydotplus、graphviz。
4、在配置完成Graphviz可視化工具后,畫出我想要的決策樹。sklearn庫集成了graphviz庫中的export_graphviz方法,作為sklearn中tree對象的屬性。因此,在tree對象即決策樹模型已經訓練完畢的前提下,可以通過tree.export_graphviz()輸出能被graphviz庫處理的.dot文件。
代碼如下:
dot_data=tree.export_graphviz(model_tree, out_file=None, max_depth=5, feature_names=names_list, filled=True,rounded=True)
使用pydotplus庫調用graph_from_dot_data()方法將生成的.dot文件轉置為.graph圖形對象。.graph圖形對象不能直接可視化,可以通過write_pdf/write_jpg等方法轉置為可打開的文件查看。
這樣就成功安裝了Graphviz庫,并使用該庫解決了決策樹模型的可視化問題。如果對你有所幫助,請為我點個贊,thankyou。