1
基本思想
第二期推文中我們巳經介紹了如何從資料集中建立樹,我們是用字典類型來存儲決策樹的,然而字典的表示形式非常不易于了解,決策樹的主要優點就是直覺易于了解,如果不能将其直覺地顯示出來,就無法發揮其優勢。鑒于Python 并沒有提供繪制樹的工具,本期我們将介紹使用Matplotlib庫來建立樹形圖。Matplotlib庫是Python優秀的資料可視化第三方庫,下面我們通過具體的算法實作來感受Matplotlib庫的繪圖魅力。
2
算法實作
1.擷取決策樹的葉節點數和樹的層數
為保證繪制的決策樹具有美觀的比例和位置,我們必須要知道葉節點數和樹的層數,以便正确确定x軸與y軸的長度。
【求葉子節點數】
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CMlZmNzcjYmNGOwUmZjljM4UTY2MjNjVTO0YjN0MTZz8CXxAzLcFDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL2M3Lc9CX6MHc0RHaiojIsJye.png)
【求樹的層數】
【列印結果】
運作結果(python3):
2.圖示決策樹
函數說明 —— annotate
可以在資料圖形上添加文本注釋,内嵌支援帶箭頭的劃線工具,使得可以在其他恰當的地方指向待注釋内容。
annotate參數說明:
①xy箭頭尖端坐标,即待注釋的位置坐标
②xytext注釋位置的坐标
③xycoords被注釋點的坐标系屬性,參數如下
figure points—— 以繪圖區左下角為參考,機關是點數
figure pixels—— 以繪圖區左下角為參考,機關是像素數
figure fraction—— 以繪圖區左下角為參考,機關是百分比
axes points —— 以子繪圖區左下角為參考,機關是點數(一個figure可以有多個axex,預設為1個)
axes pixels—— 以子繪圖區左下角為參考,機關是像素數
axes fraction ——以子繪圖區左下角為參考,機關是百分比
data ——以被注釋的坐标點xy為參考 (預設值)
polar——不使用本地資料坐标系,使用極坐标系
④extcoords注釋文本的坐标系屬性,預設與xycoords屬性值相同,也可設為不同的值。除了允許輸入xycoords的屬性值,還允許輸入以下兩種:
offset points 相對于被注釋點xy的偏移量(機關是點)
offset pixels 相對于被注釋點xy的偏移量(機關是像素)
⑤arrowprops 箭頭參數,參數類型為字典dict
width ——點箭頭的寬度
headwidth——箭頭底座的寬度
headlength—— 點箭頭的長度
shrink——箭頭總長度從兩端收縮的百分比
facecolor ——箭頭顔色
⑥bbox給标題增加外框 ,常用參數如下:
boxstyle方框外形
facecolor(簡寫fc)背景顔色
edgecolor(簡寫ec)邊框線條顔色
edgewidth邊框線條大小
函數說明 —— text
text文法: text(x,y,string,fontsize=15,verticalalignment="top",horizontalalignment="right")
①x,y:表示坐标點
②string:表示注釋文字
③fontsize:表示字型大小
④verticalalignment:垂直對齊方式
參數:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
⑤horizontalalignment:水準對齊方式
參數:[ ‘center’ | ‘right’ | ‘left’ ]
boxstyle方框外形
facecolor(簡寫fc)背景顔色
edgecolor(簡寫ec)邊框線條顔色
edgewidth邊框線條大小
函數說明 —— plot
plot文法:
plot(x, y, color='green', marker='o', linestyle='dashed',linewidth=2, markersize=12)
① color:繪圖顔色
② marker:繪圖符号
③ linestyle:線型
④ linewidth:線寬
⑤ markersize:繪圖符号大小