首页 > 编程 > Python > 正文

【机器学习实战】决策树-Python3文件读写错误小结

2019-11-08 18:46:19
字体:
来源:转载
供稿:网友

由于书中代码是Python2,而自己使用的是Python3,在测试 决策树存储代码时出现错误:

Traceback (most recent call last):  File "/home/xxx/AI/DecisionTree/test3.py", line 11, in <module>    trees.storeTree(myTree, 'classifierStorage.txt')  File "/home/xxx/AI/DecisionTree/trees.py", line 110, in storeTree    pickle.dump(inputTree, fw)TypeError: write() argument must be str, not bytes

解决方法:

fw = open(filename, 'w')改为

fw = open(filename, 'wb')完整代码如下

# 在磁盘上存储 决策树对象  用于节省时间def storeTree(inputTree, filename):    import pickle    fw = open(filename, 'wb')    pickle.dump(inputTree, fw)    fw.close()继续运行

出现错误:

Traceback (most recent call last):  File "/home/xxx/AI/DecisionTree/test3.py", line 12, in <module>    load_tree = trees.grabTree('classifierStorage.txt')  File "/home/xxx/AI/DecisionTree/trees.py", line 117, in grabTree    return pickle.load(fr)  File "/usr/lib/python3.5/codecs.py", line 321, in decode    (result, consumed) = self._buffer_decode(data, self.errors, final)UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

解决方法:

fr = open(filename)改为

fr = open(filename, 'rb')完整代码:

# 加载存储在磁盘上的 决策树def grabTree(filename):    import pickle    fr = open(filename, 'rb')    return pickle.load(fr)


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表