我正在尝试腌制贝叶斯类对象。我的代码是:
file = open('Bayes.pkl', 'wb')
pickle.dump(bayes, file)
file.close()
我收到以下错误
TypeError:无法腌制instancemethod对象
为了克服这个问题,我提到了这个StackOverflow解决方案:
How to remove instancemethod objects, for the sake of pickle, without modifying the original class
声明使用方法getstate()和setstate()。这行得通,我可以使我的文件腌制。
但是,当我尝试测试数据时,出现以下错误:
File "/home/anaconda2/lib/python2.7/site-packages/reverend/thomas.py", line 254, in guess
res[pname]=self.combiner(p, pname)
TypeError: 'NoneType' object is not callable
我的代码如下:
my_str = ' '
for val in sourceCode:
my_str += str(val)
results = classifier.guess(my_str)
print results
my_str的类型是字符串。但是,仍然没有猜测。
最佳答案
您的班级通过bayes.save('bayes.pkl')
和bayes.load('bayes.pkl')
拥有自己的酸洗/解酸支持。它执行以下操作:
def save(self, fname='bayesdata.dat'):
from cPickle import dump
fp = open(fname, 'wb')
dump(self.pools, fp)
fp.close()
def load(self, fname='bayesdata.dat'):
from cPickle import load
fp = open(fname, 'rb')
self.pools = load(fp)
fp.close()
self.corpus = self.pools['__Corpus__']
self.dirty = True