1. 程式人生 > >機器學習實戰-決策樹-畫圖

機器學習實戰-決策樹-畫圖

 

獲取樹節點的資料以及樹的層數

  1. def getNumLeafs(myTree):  
  2.     numLeafs=0  
  3. firstStr=list(myTree.keys())[0]   
  4. #此處注意,書上用的是py2的版本,所以有些不同,對於a.keys()的型別需要先轉成列表  
  5. secondDict=myTree[firstStr]  
  6. #firstStr取出決策樹的頂級父節點,然後讀取頂級父節點所建立的樹  
  7.     for key in secondDict.keys():  
  8.         if type(secondDict[key]).__name__=='dict'#判斷某個鍵值是否是一個dict型別,即是否是一個決策節點  
  9.              numLeafs+=getNumLeafs(secondDict[key])#遞迴演算法,不斷遞迴,直至找到葉子節點  
  10.         else:  
  11.             numLeafs+=1  
  12.     return numLeafs  
  13.     
  14. def getTreeDepth(myTree):  
  15.     maxDepth=0  
  16.     firstStr=list(myTree.keys())[0]  
  17.     secondDict=myTree[firstStr]  
  18.     for key in secondDict.keys():  
  19.         if type(secondDict[key]).__name__=='dict':  
  20. #上面內容都一樣  
  21.                 hisDepth=1+getTreeDepth(secondDict[key])#如果是決策節點,說明就需要至少還有一層,所以加上1,並搜尋此決策節點下是否還有決策節點  
  22.         else:  
  23.             thisDepth=1  
  24.         if thisDepth>maxDepth:  
  25.             maxDepth=thisDepth  
  26. return maxDepth