由于书中代码是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)
新闻热点
疑难解答