决策树可视化保姆级教程
決策樹可視化指南
決策樹是機器學習的一種經典的模型,因其泛化性能好,可解釋性強而被廣泛應用到實際商業預測中。通常在我們完成決策樹模型搭建后,我們會進一步研究分析我們搭建好的模型,這時候模型的可視化就顯得尤為重要。下面是生成的決策樹可視化圖像:
插件安裝
scikit-learn中決策樹的可視化一般需要安裝graphviz。主要包括graphviz庫的安裝和python的graphviz插件的安裝。
安裝graphviz庫:
- pip install graphviz
安裝graphviz插件:
(a)打開我的電腦,點擊屬性
(b)選擇高級設置
(c)選擇環境變量
(d)雙擊選擇Path進入
(e)新建,粘貼的前面復制的bin路徑,點擊確定
(f)重啟jupter notebook即可
可視化的三種方法
搭建模型
from sklearn import tree dtree = tree.DecisionTreeClassifier() dtree.fit(x_train,y_train)在搭建完決策樹后,下面介紹可視化具體操作的三種方法
方法一:
簡單粗暴,一行代碼搞定什么都不用安裝。缺點也很明顯,生成的可視化圖比較模糊,且不能保存圖片,違背了可視化的初衷,不建議使用這種方法。
方法二:
這種方法比較常用,需要安裝graphviz庫和graphviz插件,安裝方法上面已經介紹。這種使用這種方法得到的圖像比較高清,并且還會額外生成PDF文件和一個文本文件。比較推薦使用。
方法三:
最后一種方法是最麻煩的,除了需要安裝graphviz庫和graphviz插件,還需要安裝:
- pip install pydotplus
- pip install six
這種方法得到的圖像比較清晰,且可以雙擊放大縮小,可以保存為png圖片和pdf文檔。這種方法根據個人需求使用吧。
注意事項
在我們做可視化的時候,需要注意中各重要的參數:
在做可視化的時候需要傳入這兩個參數,這兩個參數都需要傳入一個列表類型的數據,并且兩個參數需要與模型傳入的數據一一對應,否則就違背了可視化的初衷了。
feature_names:
假如我們的數據格式是DataFrame格式通??梢栽跀祿幚砗笸ㄟ^以下方法獲取(也可以手動輸入):
class_names:
- 這個參數如果類別數不多的話,最好手動輸入?;蛘咄ㄟ^data[‘分類標簽’].unique()獲取后再做格式轉換和順序調整
決策樹可視化實戰
from sklearn import tree import pandas as pddata = pd.read_csv('zoo.csv') data.head()# 獲取訓練數據和標簽 x_data = data.drop(['animal_name', 'class_type'], axis=1) y_data = data['class_type']# 搭建模型 dtree = tree.DecisionTreeClassifier() dtree.fit(x_data,y_data)# 獲取feature_names和class_names feature_names = data.columns[1:-1]cls_n = data.class_type.unique() class_names = [] for i in cls_n:class_names.append(str(i)) class_names.sort()# # 方法一 # tree.plot_tree(dtree,filled=True)# # 方法二 # import graphviz# dot_data = tree.export_graphviz(dtree, # out_file=None, # feature_names=feature_names, # class_names=cls_n, # filled=True, # rounded=True, # special_characters=True) # graph = graphviz.Source(dot_data)# graph.render('computer') # graph # 方法三 import graphviz import pydotplus from six import StringIO from IPython.display import Image # 文件緩存 dot_data = StringIO() # 將決策樹導入到dot中 tree.export_graphviz(dtree, out_file=dot_data, filled=True, rounded=True,special_characters=True,feature_names = feature_names,class_names=class_names) # 將生成的dot文件生成graph print(feature_names) graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) # 將結果存入到png文件中 graph.write_png('diabetes.png') graph.write_pdf('diabetes.pdf') # 顯示 Image(graph.create_png())總結
以上是生活随笔為你收集整理的决策树可视化保姆级教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 石斛茶的功效与作用、禁忌和食用方法
- 下一篇: 滑动窗口最大值-leetcode 239