Python中的MemoryError,但不是IPython
一般来说,您能想到发生这种情况的原因吗(例如,Python中有一个MemoryError,但IPython中没有(控制台--不是笔记本)?) 更具体地说,我在Python中的MemoryError,但不是IPython,python,memory,machine-learning,ipython,scikit-learn,Python,Memory,Machine Learning,Ipython,Scikit Learn,一般来说,您能想到发生这种情况的原因吗(例如,Python中有一个MemoryError,但IPython中没有(控制台--不是笔记本)?) 更具体地说,我在multiclass和multilabel案例中使用了sklearn的sgdclassizer。如果出现以下代码,则会显示错误: model = SGDClassifier( loss='hinge', penalty='l2', n_iter=niter, alpha=alpha, fit_
multiclass
和multilabel
案例中使用了sklearn的sgdclassizer
。如果出现以下代码,则会显示错误:
model = SGDClassifier(
loss='hinge',
penalty='l2',
n_iter=niter,
alpha=alpha,
fit_intercept=True,
n_jobs=1)
mc = OneVsRestClassifier(model)
mc.fit(X, y)
调用mc.fit(X,y)时,发生以下错误:
File "train12-3b.py", line 411, in buildmodel
mc.fit(X, y)
File "/usr/local/lib/python2.7/dist-packages/sklearn/multiclass.py", line 201, in fit
n_jobs=self.n_jobs)
File "/usr/local/lib/python2.7/dist-packages/sklearn/multiclass.py", line 88, in fit_ovr
Y = lb.fit_transform(y)
File "/usr/local/lib/python2.7/dist-packages/sklearn/base.py", line 408, in fit_transform
return self.fit(X, **fit_params).transform(X)
File "/usr/local/lib/python2.7/dist-packages/sklearn/preprocessing/label.py", line 272, in transform
neg_label=self.neg_label)
File "/usr/local/lib/python2.7/dist-packages/sklearn/preprocessing/label.py", line 394, in label_binarize
Y = np.zeros((len(y), len(classes)), dtype=np.int)
MemoryError
Y
是一个包含600万行和k
列的矩阵,其中金色标签为1,其余为0(在本例中,k=21
,但我想选择>2000)Y
通过sklearn
转换为密集矩阵(因此Y=np.zero((len(Y),len(classes)),dtype=np.int)
MemoryError),即使它作为稀疏矩阵传入
我有60 gb的ram,有21列,最多不应该超过8 gb(600万*21*64),所以我很困惑。我重写了Y=np.zero((len(Y),len(classes)),dtype=np.int
以使用dtype=bool
,但没有运气
有什么想法吗?听起来您遇到了当前标签二值化器实现的一个限制:请参阅问题。有很多方法可以解决它
请随意尝试该分支,并将您的结果作为评论报告给该PR。最好更具体一点,您是否有一些重现问题的示例代码?
X
和y
的维度是什么,您有多少RAM,您是否运行32位或64位python?X-->600万X 140k(稀疏矩阵);Y-->600万乘21(密集型(非常稀疏,但通过sklearn转换为密集型);60 gb ram;64位python 32或64位python?