【问题标题】:Cannot pickle a Naive Bayes classifier in Python?无法在 Python 中腌制朴素贝叶斯分类器?
【发布时间】:2014-12-21 01:01:12
【问题描述】:

我正在尝试将我训练有素的朴素贝叶斯分类器保存在 python 中。我已经关注了以前的类似问题,但无济于事。我对 Python 有点陌生,并不真正理解出了什么问题,我已经根据 NLTK 书创建并训练了我的分类器。如何保存此模型以供以后使用?

这是我一直遇到的错误:

picklingError: Can't pickle <class 'generator'>: attribute lookup generator on builtin failed

目前我有:

classifier = nltk.NaiveBayesClassifier.train(train_set)
saveClassifier(classifier)

def saveClassifier(classifier):
        with open('cp_model.pkl', 'w') as f:
            dump(classifier, f)

任何帮助都将不胜感激,我已经尝试解决这个问题好几个小时了。

谢谢。

【问题讨论】:

    标签: python text nltk pickle text-classification


    【解决方案1】:

    编辑: 我对此进行了一些实验,得出的结论是,在有效数据集上尝试使用最新稳定版本的 nltk 时,您的代码可以完美运行。 因此,我建议您更新/重新安装您的库或检查您的数据集是否有效。 有效的数据集必须是元组列表(featureset,label)

    【讨论】:

    • "对于 picke 你也应该写成二进制文件 'wb'" - 不是必须的:"默认情况下,pickle 数据格式使用可打印的 ASCII 表示。"
    • 感谢您的回复。我试图实现你的修复,但我只使用过书中使用的分类器。如何在训练之前获得标签/特征的概率?
    • 你实际上做得对,我的错,我习惯了 scikit 学习方法来做到这一点。我尝试了一下并编辑了我的答案。
    猜你喜欢
    • 2016-09-28
    • 2017-01-10
    • 2017-03-17
    • 2013-04-19
    • 2015-08-27
    • 2018-02-06
    • 2012-03-29
    • 2020-04-22
    相关资源
    最近更新 更多