在NLTK中保存朴素贝叶斯训练分类器
classification
machine-learning
nltk
python
6
0

关于如何保存经过训练的分类器,我有些困惑。就像在其中,每次我想使用分类器时,重新训练它显然是很糟糕且很慢,如何保存它并在需要时再次加载它?代码如下,在此先感谢您的帮助。我在NLTK朴素贝叶斯分类器中使用Python。

classifier = nltk.NaiveBayesClassifier.train(training_set)
# look inside the classifier train method in the source code of the NLTK library

def train(labeled_featuresets, estimator=nltk.probability.ELEProbDist):
    # Create the P(label) distribution
    label_probdist = estimator(label_freqdist)
    # Create the P(fval|label, fname) distribution
    feature_probdist = {}
    return NaiveBayesClassifier(label_probdist, feature_probdist)
参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

我遇到了同样的问题,由于是ELEFreqDistr NLTK类,因此无法保存该对象。无论如何,NLTK实在太慢了。在一个不错的环境上进行了45分钟的培训,我决定实现自己的算法版本(使用pypy运行或将其重命名为.pyx并安装cython)。使用相同的设置大约需要3分钟,并且可以将数据简单地保存为json(我将实现更快/更好的pickle)。

我启动了一个简单的github项目,在此处查看代码

收藏
评论

保存:

import pickle
f = open('my_classifier.pickle', 'wb')
pickle.dump(classifier, f)
f.close()

稍后加载:

import pickle
f = open('my_classifier.pickle', 'rb')
classifier = pickle.load(f)
f.close()
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号