首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python: SARIMAX模型适合太慢

Python: SARIMAX模型适合太慢
EN

Data Science用户
提问于 2021-03-06 08:25:18
回答 1查看 1.5K关注 0票数 1

我有一个时间序列数据与一个城市的datetemperature记录。以下是我从时间序列分析中得出的意见:

  1. 通过绘制datetemperature的关系图,观察其季节性。
  2. 执行adfuller test时,我们发现数据已经是固定的,所以d=0
  3. 与第一季节差异进行部分自相关和自相关,分别得到p=2q=10

码训练

模型

代码语言:javascript
复制
model=sm.tsa.statespace.SARIMAX(df['temperature'],order=(1, 1, 1),seasonal_order=(2,0,10,12))
results=model.fit()

fit函数无限期运行,无法达到输出。我是运行在谷歌Colab CPU上。

如何解决这个问题?

EN

回答 1

Data Science用户

发布于 2021-03-16 23:20:21

假设在dataframe中有多个城市。您可以在dataframe中创建一些新特性。例如,我在下面创建了一些特性,以尝试匹配PACF和ACF图形。

df['lag_1'] = df.groupby(['city'])['temperature'].transform(lambda x: x.shift(1))

d=1

df['d_1'] = df['temperature'] - df['lag_1']

P= 1:

df['p_1'] = df.groupby(['city'])['d_1'].transform(lambda x: x.shift(1))

Q= 1:

df['ma_1'] = df.groupby(['city'])['d_1'].transform(lambda x: x.shift(1).rolling(1).mean())

P=2 (及其他术语)

df['lag_t12'] = df.groupby(['city'])['temperature'].transform(lambda x: x.shift(12))

df['lag_t24'] = df.groupby(['city'])['temperature'].transform(lambda x: x.shift(24))

.

.

.

df['lag_t120'] = df.groupby(['city'])['temperature'].transform(lambda x: x.shift(120))

Q=10:

df['Q_10'] = df[col for col in df if col.startswith('lag_t')].mean()

在此之后,尝试使用LightGBM、XGBoost或其他回归包,以temprature作为目标变量,对这些新创建的特性进行回归。

或者,您可以完全放弃ACF/PCF方法,而是使用以下方法创建一系列常用的特性:

  • 移位
  • 滚动平均值
  • 滚动标准差
  • 组内最大(),min()

并对这些功能进行回归,并检查回归超参数中哪些特性最小化了RMSE/AIC/BIC。

由于交叉验证在时间序列的情况下是不同的,请考虑在scikit学习中使用TimeSeriesSplit。检查此帖子,以防您想要进行分组时间序列交叉验证。

票数 -1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/90327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档