【问题标题】:MemoryError while training large dataset using naive bayes classifier使用朴素贝叶斯分类器训练大型数据集时出现内存错误
【发布时间】:2015-01-10 09:35:04
【问题描述】:

我正在尝试使用一组不同类别的关键字来训练朴素贝叶斯分类器。

它认为是功能的每个关键字。对于大约 12K 的功能,它运行良好。但是我添加了一个有 5 个缺少关键字的类别(由换行符分隔)然后它给出了这个错误:

  File "term_classify.py", line 51, in <module>
    classifier = obj.run_classifier(cltype)
  File "/root/Desktop/karim/software/nlp/nltk/publish/lists/classifier_function.py", line 144, in run_classifier
    classifier = NaiveBayesClassifier.train(train_set)
  File "/usr/local/lib/python2.7/dist-packages/nltk/classify/naivebayes.py", line 210, in train
    count = feature_freqdist[label, fname].N()
MemoryError

我检查了几个线程但没有帮助。有没有人遇到过类似的问题?

我是这样调用函数的:

if(cltype == 'nb'):
    print 'classifier : ',cltype
    classifier = NaiveBayesClassifier.train(train_set)

train_set 包含用于训练目的的关键字列表 (feature_value)

【问题讨论】:

  • 尝试使用生成器仅在请求时生成项目。
  • @Alexander:感谢您的建议。假设 5 个缺少项目,分别通过;这会是可取的吗?
  • 你找到解决方案了吗?

标签: python memory memory-management machine-learning nltk


【解决方案1】:

使用numpy,它比使用列表节省很多内存:

import numpy as np:
train_set=np.array(train_set)

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 2020-09-13
    • 2020-06-28
    • 2017-06-21
    • 2014-02-21
    • 2023-03-23
    • 2017-08-30
    • 2013-04-11
    相关资源
    最近更新 更多