決策樹的視覺化輸出

2021-08-18 14:44:27 字數 2437 閱讀 3988

前面的部落格裡有提到決策樹,我們也了解了決策樹的構建過程,如果可以視覺化決策樹,把決策樹列印出來,對我們理解決策樹的構建會有很大的幫助。這篇文章中,我們就來看下如何視覺化輸出一棵決策樹。

一、安裝相應的外掛程式

我們需要安裝graphviz和pygraphviz,教程,這個教程裡有詳細的安裝過程,這裡就不贅述了。

二、執行例項

我們依然以iris資料集為例,列印輸出決策樹看下效果。

#coding=utf-8

import numpy as np

import pandas as pd

import pydotplus

def lristrain():

#預處理-引入鳶尾資料:

from sklearn.datasets import load_iris

iris = load_iris()

from sklearn.cross_validation import train_test_split

# 把資料分為測試資料和驗證資料

train_data,test_data,train_target,test_target=train_test_split(iris.data,iris.target,test_size=0.2,random_state=1)

#model(建模)-引入決策樹

from sklearn import tree

#建立乙個分類器

clf = tree.decisiontreeclassifier(criterion="entropy")

#訓練集進行訓練

clf.fit(train_data,train_target)

#畫圖方法1-生成dot檔案

with open('treeone.dot', 'w') as f:

dot_data = tree.export_graphviz(clf, out_file=none)

f.write(dot_data)

#畫圖方法2-生成pdf檔案

dot_data = tree.export_graphviz(clf, out_file=none,feature_names=clf.feature_importances_,

filled=true, rounded=true, special_characters=true)

graph = pydotplus.graph_from_dot_data(dot_data)

###儲存影象到pdf檔案

graph.write_pdf("treetwo.pdf")

#進行**

y_pred = clf.predict(test_data)

#verify(驗證)

#引入模組

from sklearn import metrics

#法一:通過準確率進行驗證

print(metrics.accuracy_score(y_true =test_target,y_pred=y_pred))

#法二:通過混淆矩陣驗證(橫軸:實際值,縱軸:**值)(理想情況下是個對角陣)

#print(metrics.confusion_matrix(y_true=test_target,y_pred=y_pred))

lristrain()

三、輸出結果

上述的兩個方法將會產生兩個檔案,乙個是dot檔案,我們開啟這個dot檔案,得到的是決策樹生成的文字結構資訊:

如何把它轉換成樹的圖形結構呢?

開啟乙個黑視窗(cmd,anaconda prompt...都可以),先定位到生成的決策樹 treeone.dot 所在的路徑下,然後輸入命令列:dot -tpdf treeone.dot -o treeone.pdf ,這樣就把名為treeone.dot檔案在當前目錄下編譯生成了treeone.pdf檔案,開啟後效果如下:

生成的第二個檔案treetwo.pdf就可以直接開啟了,效果如下:

我們生成決策樹就是呼叫了export_graphviz函式,這個函式有很多引數值,可以通過設定這些引數值,控制生成節點上的輸出資訊,大家可以根據自己的需求設定引數。

小結:我們這裡是用sklearn中的decisiontreeclassifier進行分類的,構建模型的時候只用到了這一棵決策樹。後面我們會將到整合學習演算法xgboost演算法中決策樹的視覺化,xgboost是直接用它自己封裝的plot_tree這個類來進行輸出,不需要單獨安裝外掛程式,反而更加容易視覺化輸出決策樹。

決策樹視覺化

決策樹相比其他演算法的乙個重要特性就是 可解釋性,構建決策樹的過程就相當於形成 if then 規則集。如果我們能夠將生成的決策樹視覺化,那麼我們就可以對資料集與 值之間的關係有清晰的認識。首先,我們以 sklearn.datasets 包中的鳶尾花資料集為例。from sklearn.datase...

sklearn 決策樹視覺化

來自google developer 的machine learning recipes with josh gordon youtube鏈結 這裡使用了lris flower data set 生成了乙個認花的小樹 import numpy as np from sklearn.datasets ...

Scikit learn 決策樹視覺化

平常網上看到的關於決策樹的scikit learn教程大都是直接給出容器的訓練 clf tree.decisiontreeclassifier clf clf.fit x,y clf.predict 然而有時候要的不只是 資料的結果,選擇決策樹還想要看到訓練出來的決策樹是什麼樣的。於是經過各種搜尋,...