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

标签 python machine-learning pickle bayesian

我正在尝试 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/

相关文章:

java - AWS cloudwatch 用于实时监控应用程序

python-3.x - 如何保存openCV分类器?

python - pickle 转储的多处理队列问题

python - 为什么 Python 会引发 TypeError 而不是 SyntaxError?

python - 在 AWS Elastic Beanstalk 上部署 Tornado 应用程序

python - Tkinter:在 Canvas 底部设置 0、0 坐标

python - 使用 Keras 处理文本进行分类

python - 如果我们可以直接使用变量而无需初始化,为什么我们在tensorflow中使用tf.Variable?

tensorflow - 如何使用专门针对 GCP 的 TFX SDK 实现 Kubeflow "Run Paramters"?

python - 使用 pickle.load() 时出现 EOFError