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

在输入完程序清单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函数完全解析
机器学习(四)—决策树
《机器学习实战》笔记之三——决策树的构造

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容