gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 18:46:01 25 4
gpt4 key购买 nike

我试图用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com