gpt4 book ai didi

python - 无法从牧师模块中 pickle 贝叶斯对象

转载 作者:行者123 更新时间:2023-11-30 09:51:45 25 4
gpt4 key购买 nike

我正在尝试 pickle 贝叶斯类对象。我的代码是:

file = open('Bayes.pkl', 'wb')
pickle.dump(bayes, file)
file.close()

我收到以下错误

TypeError: can't pickle instancemethod object

为了克服这个问题,我引用了这个 StackOverflow 解决方案: How to remove instancemethod objects, for the sake of pickle, without modifying the original class

这表明使用方法getstate()和setstate()。这很有效,我能够 pickle 我的文件。但是,当我尝试测试我的数据时,出现如下错误:

 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') 有自己的 pickling/unpickling 支持。它执行以下操作:

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

关于python - 无法从牧师模块中 pickle 贝叶斯对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43928111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com