保存大型稀疏矩阵

2024-06-24 13:15:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试压缩一个大的稀疏矩阵以备以后使用。我得到了这个错误:

  File "tfidf_scikit.py", line 44, in <module>
    pickle.dump([trainID, trainX, trainY], fout, protocol=-1)
SystemError: error return without exception set

trainX是大型稀疏矩阵,另外两个是list6mil元素长。在

^{pr2}$

此时,Python的RAM使用量是4.6GB,而我的笔记本电脑上有16GB的RAM。在

我想我遇到了一个已知的cPickle内存错误,它不能处理太大的对象。我也尝试了marshal,但我不认为它适用于scipy矩阵。有人能提供一个解决方案,最好是一个如何加载和保存这个例子?在

Python 2.7.5

Mac OS 10.9版

谢谢。在


Tags: inpy错误trainyline矩阵scikitdump
2条回答

我在使用一个千兆字节的Numpy矩阵时遇到了这个问题(Ubuntu12.04和Python2.7.3——似乎是这个问题:https://github.com/numpy/numpy/issues/2396)。在

我已经用numpy.savetxt() / numpy.loadtxt文件(). 矩阵被压缩,保存时添加一个.gz文件扩展名。在

因为我也只有一个矩阵,所以我没有研究HDF5的使用。在

numpy.savetxt(仅适用于数组,不适用于稀疏矩阵)和sklearn.externals.joblib.dump(pickling,慢得要命,内存使用量大增)对我在Python2.7上都不起作用。在

相反,我使用了^{},它工作得很好。请记住,它只适用于csccsrbsrdia或{}矩阵。在

相关问题 更多 >