機器學習實戰-決策樹-畫圖
阿新 • • 發佈:2018-12-03
獲取樹節點的資料以及樹的層數
- def getNumLeafs(myTree):
- numLeafs=0
- firstStr=list(myTree.keys())[0]
- #此處注意,書上用的是py2的版本,所以有些不同,對於a.keys()的型別需要先轉成列表
-
secondDict=myTree[firstStr]
- #firstStr取出決策樹的頂級父節點,然後讀取頂級父節點所建立的樹
- for key in secondDict.keys():
-
if type(secondDict[key]).__name__=='dict': #判斷某個鍵值是否是一個dict型別,即是否是一個決策節點
- numLeafs+=getNumLeafs(secondDict[key])#遞迴演算法,不斷遞迴,直至找到葉子節點
- else:
-
numLeafs+=1
- return numLeafs
- def getTreeDepth(myTree):
- maxDepth=0
- firstStr=list(myTree.keys())[0]
- secondDict=myTree[firstStr]
- for key in secondDict.keys():
- if type(secondDict[key]).__name__=='dict':
- #上面內容都一樣
- hisDepth=1+getTreeDepth(secondDict[key])#如果是決策節點,說明就需要至少還有一層,所以加上1,並搜尋此決策節點下是否還有決策節點
- else:
- thisDepth=1
- if thisDepth>maxDepth:
- maxDepth=thisDepth
- return maxDepth