Python sklearn GaussianNB:“MemoryError”但没有关于如何修复

时间:2016-02-11 17:52:51

标签: python scikit-learn

我正在运行以下代码来创建和拟合GaussianNB分类器:

features_train, features_test, labels_train, labels_test = preprocess()

### compute the accuracy of your Naive Bayes classifier
# import the sklearn module for GaussianNB 
from sklearn.naive_bayes import GaussianNB 
import numpy as np

### create classifier 
clf = GaussianNB()

### fit the classifier on the training features and labels    
clf.fit(features_train, labels_train)

在本地运行以上内容:

>>> runfile('C:/.../naive_bayes')
no. of Chris training emails: 4406
no. of Sara training emails: 4383
>>> clf
GaussianNB()

我相信这会检出“preprocess()”,因为它会成功加载features_train,features_test,labels_train,labels_test。

当我尝试clf.score或clf.predict时,我得到一个MemoryError:

>>> clf.predict(features_test)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\sklearn\naive_bayes.py", line 64, in predict
    jll = self._joint_log_likelihood(X)
  File "C:\Python27\lib\site-packages\sklearn\naive_bayes.py", line 343, in _joint_log_likelihood
    n_ij -= 0.5 * np.sum(((X - self.theta_[i, :]) ** 2) /
MemoryError
>>> clf.score(features_test,labels_test)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\sklearn\base.py", line 295, in score
    return accuracy_score(y, self.predict(X), sample_weight=sample_weight)
  File "C:\Python27\lib\site-packages\sklearn\naive_bayes.py", line 64, in predict
    jll = self._joint_log_likelihood(X)
  File "C:\Python27\lib\site-packages\sklearn\naive_bayes.py", line 343, in _joint_log_likelihood
    n_ij -= 0.5 * np.sum(((X - self.theta_[i, :]) ** 2) /
MemoryError

我不认为这是我的记忆问题,因为我没有看到我的任务管理器上的RAM出现峰值,也没有接近我机器上的内存使用量。

我怀疑它是Python版本和库版本的东西。

任何有助于诊断这一点的帮助表示赞赏。我可以根据需要提供更多信息。

2 个答案:

答案 0 :(得分:1)

我相信我在网上阅读了一些相关帖子后回答了我的问题(没有使用以前回答的Stackoverflow帖子)。

对我来说,关键是通过Anaconda简单地转移到64位Python。当在64位中重试在32位Python中运行的完全相同的代码时,解决了“MemoryError”的所有问题。据我所知,这是唯一被改变的变量。

也许这不是一个非常令人满意的答案,但如果这个问题在将来搜索完全相同的sklearn MemoryError问题时仍然可以保留,那就太好了。

答案 1 :(得分:0)

我也参加同样的Udacity课程,但我遇到了同样的问题。我安装了Anaconda 64bits并在Spyder中执行了脚本,一切都按预期完成了