【问题标题】:ExponentialSmoothing - forecast daily dataExponentialSmoothing - 预测每日数据
【发布时间】:2021-11-30 18:40:56
【问题描述】:

我有一个包含 2015 年至 2019 年(2019 年 12 月 12 日)5 年每日数据的文件,我需要预测 2021 年的每日数据; 我使用 statsmodels.tsa.holtwinters.ExponentialSmoothing,直到现在我还能够通过预测 2019 年和 2020 年来预测它。 不预测 2020 年是否可以预测 2021 年?

以下是我的代码:

fit1 = ExponentialSmoothing(train[colval],seasonal_periods=730,trend=trend, seasonal=seasonal,).fit()
prediction_result = fit1.forecast(365)

用上面的代码,预测也是在训练数据集之后才开始的,正常吗?

这就是我拆分数据的方式:2015-2018 年训练和 2019 年进行测试

【问题讨论】:

  • 您可以查看predict。您可以通过开始日期和结束日期来预测。但是,您需要您的系列具有定义了频率变量的 datetimeindex
  • @max12525k 根据我的测试,开始日期必须与数据集中的现有索引匹配,并且我拥有的索引不包含任何 2021 年日期。我应该用日期填充它,但可能没有值吗?

标签: python machine-learning time-series forecasting holtwinters


【解决方案1】:

如果您在训练时将基于datetimeindex 的系列提供给ExponentialSmoothing,则可以使用预测函数来预测任何日期。 AirPassengers 数据的频率设置为月开始。 AirPassengers 中包含的数据是 1949 - 1960 年的。

详情请参考以下示例:

import pandas as pd 
df = pd.read_csv('AirPassengers.csv')
df['Month'] = pd.to_datetime(df['Month'])
df = df.set_index('Month')
from statsmodels.tsa.api import ExponentialSmoothing
es = ExponentialSmoothing(df).fit()
es.predict('2021-05-01', '2021-08-01')

你会得到如下输出:

0
2021-05-01 00:00:00 431.792
2021-06-01 00:00:00 431.792
2021-07-01 00:00:00 431.792
2021-08-01 00:00:00 431.792

我希望这能回答你的问题。

【讨论】:

    猜你喜欢
    • 2023-01-16
    • 1970-01-01
    • 2020-06-18
    • 2021-05-02
    • 2017-07-31
    • 2021-08-29
    • 2020-02-20
    • 2020-07-12
    • 2016-04-21
    相关资源
    最近更新 更多