我试图挑选一个贝叶斯类对象。我的代码是:
file = open('Bayes.pkl', 'wb')
pickle.dump(bayes, file)
file.close()
我收到以下错误
TypeError:无法pickle 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的类型是字符串。但是,它仍然没有猜测。
答案 0 :(得分:1)
您的课程通过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