美文网首页
机器学习实战Py3.x填坑记—决策树

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

作者: 瘦长的丰一禾 | 来源:发表于2017-02-01 08:48 被阅读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函数完全解析
    机器学习(四)—决策树
    《机器学习实战》笔记之三——决策树的构造

    相关文章

      网友评论

          本文标题:机器学习实战Py3.x填坑记—决策树

          本文链接:https://www.haomeiwen.com/subject/yoztittx.html