机器学习实战-决策树-画图
获取树节点的数据以及树的层数
- 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