机器学习实战决策树

来源:互联网 发布:java和嵌入式哪个好 编辑:程序博客网 时间:2024/05/16 23:58
这几天一直在学习机器学习实战python代码实现,在程序清单的3-6  获取及诶单数程序,书上的程序是这样的
def getNumLeafs(myTree):    numLeafs = 0.0    firstStr=list(dict.keys(myTree))[0]    secondDict=myTree[firstStr]    print(secondDict)    print(secondDict.keys())    for key in secondDict.keys():        print(secondDict[key])        if type(secondDict[key])=='dict':            numLeafs+=getNumLeafs(secondDict[key])        else:            numLeafs+=1        print(numLeafs)    return numLeafs
有的地方为了测试我自己加了几段代码,运行结果如下:
{0: 'no', 1: {'flippers': {0: 'no', 1: 'yes'}}}
dict_keys([0, 1])
no
1.0
{'flippers': {0: 'no', 1: 'yes'}}
2.0
2.0
由此看出,在子树{0: 'no', 1: 'yes'}没有运行进去,输出结果应该是3,但是这里是2,显然不对,于是我自己编写一个函数,比书上简洁运行结果是对的:
程序如下:
def getNumLeafs(myTree):    numLeafs=0.0    for feat in myTree.keys():        if type(myTree[feat]).__name__=='dict':            numLeafs+=getNumLeafs(myTree[feat])        else:numLeafs+=1    return numLeafs
myTree = {'no surfacing': {0: 'no', 1: {'flippers': {0: 'no', 1: 'yes'}}}}a = getNumLeafs(myTree)print(a)print(myTree.keys())
运行结果如下:
3.0dict_keys(['no surfacing'])
符合预知的结果: