由于書中代碼是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)
新聞熱點
疑難解答