【发布时间】:2022-01-16 02:01:11
【问题描述】:
我正在尝试运行我的 ARIMA 模型并收到以下错误:-
MemoryError: Unable to allocate 52.4 GiB for an array with shape (83873, 83873) and data type
float64
我的 python/anaconda 安装在 C 驱动器中,并且有大约 110GB 的可用空间,但仍然出现此错误。我该如何解决这个问题?
下面是我的代码:-
from statsmodels.tsa.arima_model import ARIMA
model=ARIMA(df['Sales'],order=(1,0,1))
model_fit=model.fit()
我尝试将数据框分割为仅 1 年的值,但仍然存在问题。
Anaconda 版本是 3.8- 64 位。
我的数据框看起来像这样-
它有大约 83,873 行。
【问题讨论】:
-
您正在尝试将 52gb 分配到内存中,而不是您的硬盘中...您可以分享 DataFrame 的示例吗?
-
我假设您将一列添加为一行,因此您现在的列数与行数一样多,这使您的数据框太大。请在训练模型之前分享您的数据样本。
-
我已经提供了数据框的快照。
-
@ArneDecker 你是在建议我在不同年份有不同的专栏吗? (年份范围为 1964-1969)
-
"array with shape (83873, 83873)" 表示你有 83873 行和 83873 列。您的数据应该只有一列,不知何故它有大约 84k,这可能是 ARIMA 在训练期间需要这么多内存的原因。当您错误地将列添加为行时,可能会发生这种情况。这就是为什么我想知道您如何预处理/转换您的数据。
标签: python memory time-series arima