决策树可视化保姆级教程
決策樹可視化指南
決策樹是機(jī)器學(xué)習(xí)的一種經(jīng)典的模型,因其泛化性能好,可解釋性強(qiáng)而被廣泛應(yīng)用到實(shí)際商業(yè)預(yù)測中。通常在我們完成決策樹模型搭建后,我們會(huì)進(jìn)一步研究分析我們搭建好的模型,這時(shí)候模型的可視化就顯得尤為重要。下面是生成的決策樹可視化圖像:
插件安裝
scikit-learn中決策樹的可視化一般需要安裝graphviz。主要包括graphviz庫的安裝和python的graphviz插件的安裝。
安裝graphviz庫:
- pip install graphviz
安裝graphviz插件:
(a)打開我的電腦,點(diǎn)擊屬性
(b)選擇高級(jí)設(shè)置
(c)選擇環(huán)境變量
(d)雙擊選擇Path進(jìn)入
(e)新建,粘貼的前面復(fù)制的bin路徑,點(diǎn)擊確定
(f)重啟jupter notebook即可
可視化的三種方法
搭建模型
from sklearn import tree dtree = tree.DecisionTreeClassifier() dtree.fit(x_train,y_train)在搭建完決策樹后,下面介紹可視化具體操作的三種方法
方法一:
簡單粗暴,一行代碼搞定什么都不用安裝。缺點(diǎn)也很明顯,生成的可視化圖比較模糊,且不能保存圖片,違背了可視化的初衷,不建議使用這種方法。
方法二:
這種方法比較常用,需要安裝graphviz庫和graphviz插件,安裝方法上面已經(jīng)介紹。這種使用這種方法得到的圖像比較高清,并且還會(huì)額外生成PDF文件和一個(gè)文本文件。比較推薦使用。
方法三:
最后一種方法是最麻煩的,除了需要安裝graphviz庫和graphviz插件,還需要安裝:
- pip install pydotplus
- pip install six
這種方法得到的圖像比較清晰,且可以雙擊放大縮小,可以保存為png圖片和pdf文檔。這種方法根據(jù)個(gè)人需求使用吧。
注意事項(xiàng)
在我們做可視化的時(shí)候,需要注意中各重要的參數(shù):
在做可視化的時(shí)候需要傳入這兩個(gè)參數(shù),這兩個(gè)參數(shù)都需要傳入一個(gè)列表類型的數(shù)據(jù),并且兩個(gè)參數(shù)需要與模型傳入的數(shù)據(jù)一一對應(yīng),否則就違背了可視化的初衷了。
feature_names:
假如我們的數(shù)據(jù)格式是DataFrame格式通常可以在數(shù)據(jù)處理后通過以下方法獲取(也可以手動(dòng)輸入):
class_names:
- 這個(gè)參數(shù)如果類別數(shù)不多的話,最好手動(dòng)輸入。或者通過data[‘分類標(biāo)簽’].unique()獲取后再做格式轉(zhuǎn)換和順序調(diào)整
決策樹可視化實(shí)戰(zhàn)
from sklearn import tree import pandas as pddata = pd.read_csv('zoo.csv') data.head()# 獲取訓(xùn)練數(shù)據(jù)和標(biāo)簽 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() # 將決策樹導(dǎo)入到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()) # 將結(jié)果存入到png文件中 graph.write_png('diabetes.png') graph.write_pdf('diabetes.pdf') # 顯示 Image(graph.create_png())總結(jié)
以上是生活随笔為你收集整理的决策树可视化保姆级教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 石斛茶的功效与作用、禁忌和食用方法
- 下一篇: 滑动窗口最大值-leetcode 239