由于书中代码是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)