機器學習實戰 決策樹ID3

2021-09-05 13:07:02 字數 2385 閱讀 4557

import matplotlib.pyplot as plt

# boxstyle是文字框型別 fc是邊框粗細 sawtooth是鋸齒形

'''xy是終點座標

xytext是起點座標

可能疑問:為什麼說是終點,但是卻是箭頭從這出發的?

解答:arrowstyle="

decisionnode=dict(boxstyle="sawtooth",fc="0.8")

leafnode=dict(boxstyle="round4",fc="0.8")

arrow_args=dict(arrowstyle="

#createplot 主函式,呼叫即可畫出決策樹,其中呼叫登了剩下的所有的函式,intree的形式必須為巢狀的決策樹

def createplot():

fig=plt.figure(1,facecolor='white') # 新建乙個畫布,背景設定為白色的

fig.clf()# 將畫圖清空

createplot.ax1=plt.subplot(111,frameon=false)# 設定乙個多圖展示,但是設定多圖只有乙個,

# 但是設定引數是111,構建了乙個1*1的模組,並操作物件指向第乙個圖。

plotnode('decision', (0.5,0.1),(0.1,0.5),decisionnode)

plotnode('leaf', (0.8,0.5),(0.3,0.7),leafnode)

plt.show()

def plotnode(nodetxt,centerpt,parentpt,nodetype):#plotnode函式有nodetxt,centerpt, parentpt, nodetype這四個引數。

# nodetxt用於記錄nodetxt,即節點的文字資訊。centerpt表示那個節點框的位置。

# parentpt表示那個箭頭的起始位置。nodetype表示的是節點的型別,

# 也就會用我們之前定義的全域性變數。

createplot.ax1.annotate(nodetxt,xy=parentpt,xycoords='axes fraction',\

xytext=centerpt,textcoords='axes fraction',\

va="center",ha="center",bbox=nodetype,arrowprops=arrow_args)#annotate是注釋的意思,

# 也就是作為原來那個框的注釋,也是新增一些新的東西

def getnumleafs(mytree):

numleafs=0

firstsides = list(mytree.keys())# python3支援語句,和後面mytree.key()[0]功能一樣

firststr = firstsides[0]

seconddict=mytree[firststr]# mytree經過第乙個特徵值分類後的字典

for key in seconddict.keys():#測試資料是否為字典形式

if type(seconddict[key]).__name__=='dict':# type(seconddict[key]).__name__輸出的是括號裡面的變數的型別,即判斷seconddict[key]對應的內容是否為字典型別

numleafs+=getnumleafs(seconddict[key])

else: numleafs+=1

return numleafs

##這部分內容詳細解釋如下圖,兩個圖中每一步畫的數字是相對應的內容,有助於大家理解。

def gettreedepth(mytree):

maxdepth=0

firstsides = list(mytree.keys())# python3支援語句,和後面mytree.key()[0]功能一樣

firststr = firstsides[0]

seconddict=mytree[firststr]# mytree經過第乙個特徵值分類後的字典

決策樹 ID3構建決策樹

coding utf 8 from math import log import operator 建立訓練資料集 defcreatedataset dataset 1,1,yes 1,1,yes 1,0,no 0,1,no 0,1,no 資料集的最後乙個元素作為該資料的標籤,是否是魚 labels...

機器學習02 決策樹ID3演算法

概述 通過分析每個資料特徵項在分類過程中所起到的所用比重,將資料劃分為幾個資料子集,如果某個資料子集資料同一型別,則無需再繼續劃分資料分類,如果不屬於同一分類,則需要在對資料子集進行分割。優點 計算複雜度不高。缺點 可能會出現由於樣本特徵值對應的樣本數量不統一導致結果偏向於數量多的樣本對應的分類。在...

機器學習筆記之決策樹ID3

劃分資料集最大的原則是 將無序的資料變得更加有序。我們可以使用多種方法劃分資料集,但是每種方法都有各自的優缺點。我們可以在劃分資料之前使用資訊理論量化度量資訊的內容。在劃分資料集之前之後資訊發生的變化稱為資訊增益,知道如何計算資訊增益,我們就可以計算每個特徵值劃分資料集獲得的資訊增益,獲得資訊增益最...