机器学习实战Py3.x填坑记—决策树

2017-02-01  本文已影响309人  瘦长的丰一禾

在输入完程序清单3-5之后运行命令:

In [22]:import treePlotter
In [23]:treePlotter.createPlot()

出现错误:ValueError: Vertical alignment must be one of ('top', 'bottom', 'center', 'baseline')
而并没有出现书上的图3-5
#该问题还没解决。
在输入完程序清单3-6之后,输入如下命令出现错误
In [34]:myTree = treePlotter.retrieveTree(0)
In [35]:treePlotter.getNumLeafs(myTree)

TypeError: 'dict_keys' object does not support indexing

在2.7中,找到key所对应的第一个元素为:firstStr = myTree.keys()[0],
但这在3.4中运行会报错:'dict_keys' object does not support indexing,这是因为python3改变了dict.keys,
返回的是dict_keys对象,支持iterable 但不支持indexable,我们可以将其明确的转化成list,
则此项功能在3中应这样实现:
firstSides = list(myTree.keys()) 
firstStr = firstSides[0]#找到输入的第一个元素
def storeTree(inputTree, filename):
    import pickle
    fw = open(filename, 'wb')  
    #书上写的是'w',运行出现TypeError: write() argument must be str, not bytes。
    #改为'wb'问题解决。

    pickle.dump(inputTree, fw)
    fw.close()

def grabTree(filename):
    import pickle
    fr = open(filename,'rb') 
    return pickle.load(fr)

''' fr = open(filename) 书上没有写打开方式,会出现错误:
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 0: illegal multibyte sequence
改为fr = open(filename,'rb') 解决问题。
'''
    


遇到问题搜索如下参考:
[机器学习&数据挖掘]机器学习实战决策树plotTree函数完全解析
机器学习(四)—决策树
《机器学习实战》笔记之三——决策树的构造

上一篇下一篇

猜你喜欢

热点阅读