使用朴素贝叶斯分类器训练大型数据集时的MemoryError

时间:2014-11-13 09:35:11

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

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

它认为是功能的每个关键字。对于大约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)

1 个答案:

答案 0 :(得分:1)

使用numpy,它比使用列表节省了大量内存:

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