机器学习实战决策树

这几天一直在学习机器学习实战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.0
dict_keys(['no surfacing'])
符合预知的结果:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值