如何在Python中拟合Holt-Winters模型并预测未来结果?

我有一份包含4年销售数据的数据集,试图预测未来五年的销售情况。我已将数据集分为36个月的训练集和12个月的测试集。我选择了Holt-Winters方法,并编写了以下代码来测试模型。

from statsmodels.tsa.api import ExponentialSmoothingholt_winter = ExponentialSmoothing(np.asarray(train_data['Sales']), seasonal_periods=12, trend='add', seasonal='add')hw_fit = holt_winter.fit()hw_forecast = hw_fit.forecast(len(test_data))plt.figure(figsize=(16,8))plt.plot(train_data.index, train_data['Sales'], "b.-", label='Train Data')plt.plot(test_data.index, test_data['Sales'], "ro-", label='Original Test Data')plt.plot(test_data.index, hw_forecast, "gx-", label='Holt_Winter Forecast Data')plt.ylabel('Score', fontsize=16)plt.xlabel('Time', fontsize=16)plt.legend(loc='best')plt.title('Holt Winters Forecast', fontsize=20)plt.show()

代码似乎运行正常,并且可能正确预测了测试数据集的结果。然而,我在尝试预测未来五年的销售时遇到了困难,不知道该如何编写代码?


回答:

hw_fit.predict(start, end)

将从步骤start预测到步骤end,其中步骤0是训练数据的第一个值。
forecast用于进行样本外预测。因此,这两者是等价的:

hw_fit.forecast(steps)hw_fit.predict(len(train_data), len(train_data)+steps-1)

所以,由于你的模型是以月为单位训练的,如果你想预测训练数据之后的n个月的销售情况,你可以使用上述方法,并设置steps=n

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注