python - 拟合任何类型的模型时出现 scikit 内存错误

标签 python out-of-memory scikit-learn

我试图用 scikit 的线性模型 (Ridge(), Lasso(), LinearRegression()) 拟合 (223129, 108) 数据集并得到以下错误。 不知道该怎么做,数据似乎不够大,无法用完内存(我有 16GB)。 有什么想法吗?

---------------------------------------------------------------------------
MemoryError                               Traceback (most recent call last)
<ipython-input-34-8ea705d45c5d> in <module>()
----> 1 cv_loop(T,yn, model=reg, per_test=0.2,cv_random=False,tresh=450)

<ipython-input-1-ea163943e461> in cv_loop(X, y, model, per_test, cv_random, tresh)
     48     preds_all=np.zeros((y_cv.shape))
     49     for i in range(y_n):
---> 50         model.fit(X_train, y_train[:,i])
     51 
     52         preds = model.predict(X_cv)

C:\Users\m&g\AppData\Local\Enthought\Canopy32\User\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\linear_model\coordinate_descent.pyc in fit(self, X, y, Xy, coef_init)
    608                           "estimator", stacklevel=2)
    609         X = atleast2d_or_csc(X, dtype=np.float64, order='F',
--> 610                              copy=self.copy_X and self.fit_intercept)
    611         # From now on X can be touched inplace
    612         y = np.asarray(y, dtype=np.float64)

C:\Users\m&g\AppData\Local\Enthought\Canopy32\User\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\utils\validation.pyc in atleast2d_or_csc(X, dtype, order, copy, force_all_finite)
    122     """
    123     return _atleast2d_or_sparse(X, dtype, order, copy, sparse.csc_matrix,
--> 124                                 "tocsc", force_all_finite)
    125 
    126 

C:\Users\m&g\AppData\Local\Enthought\Canopy32\User\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\utils\validation.pyc in _atleast2d_or_sparse(X, dtype, order, copy, sparse_class, convmethod, force_all_finite)
    109     else:
    110         X = array2d(X, dtype=dtype, order=order, copy=copy,
--> 111                     force_all_finite=force_all_finite)
    112         if force_all_finite:
    113             _assert_all_finite(X)

C:\Users\m&g\AppData\Local\Enthought\Canopy32\User\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\utils\validation.pyc in array2d(X, dtype, order, copy, force_all_finite)
     89         raise TypeError('A sparse matrix was passed, but dense data '
     90                         'is required. Use X.toarray() to convert to dense.')
---> 91     X_2d = np.asarray(np.atleast_2d(X), dtype=dtype, order=order)
     92     if force_all_finite:
     93         _assert_all_finite(X_2d)

C:\Users\m&g\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.0.3.1262.win-x86\lib\site-packages\numpy\core\numeric.pyc in asarray(a, dtype, order)
    318 
    319     """
--> 320     return array(a, dtype, copy=False, order=order)
    321 
    322 def asanyarray(a, dtype=None, order=None):

MemoryError: 

最佳答案

由于 32 位进程,您的 16Gb RAM 有效地减少到 4Gb(因为 32 位意味着您只能区分 2^32 个内存地址,即 4Gb)。如果您想处理大型数据集,我建议您切换到 64 位版本。

如果您不能求助于更改位数,那么您应该准备好对您的代码采取狡猾的态度。您应该仔细查看您的代码以寻找可能的内存分配(感觉像 C,不是吗?)并且有时甚至可能会执行一些 del(以防您不再需要变量时但口译员不知道)。

或者,由于您的所有数据都只是一个 100 维向量,并且您有大量数据 (200K),因此您可能只取其中的 10%,并且仍然具有代表性。但这取决于您的数据的性质,需要进一步研究。

关于python - 拟合任何类型的模型时出现 scikit 内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20036435/

相关文章:

python - 你如何从 sklearn.cluster.ward_tree 可视化病房树?

python - 如何在单次训练期间保存和快照机器学习模型?

python - 为 CountVectorizer (sklearn) 添加词干支持

python - 错误: 'value' : keys_to_typing(value)} while sending keys selenium python

python - 在 django 模板中处理 u'\x00'

java - Android 内存不足错误,HashMap 中出现 20MB 文本文件

java - 制作多图安卓游戏,如何避免多图报java.lang.OutOfMemory错误

python - ZeroMQ、Redis 和 Gevent

python - ImportError : cannot import name 'Mapping' from 'collections' , flask 导入不工作

scala - SBT ProGuard 插件 : OutOfMemoryError, 如何增加堆空间?