【发布时间】:2021-12-05 00:56:09
【问题描述】:
我有一个包含 4 年销售额的数据集,并试图预测未来五年的销售额。我将数据集分为 36 个月作为训练集和 12 个月作为测试集。我选择了 Holt Winter 的方法并编写了以下代码来测试模型。
from statsmodels.tsa.api import ExponentialSmoothing
holt_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()
似乎代码运行良好,并且可能正确预测了测试数据集的结果。但是,如果我想预测未来五年的销售额,我正在努力弄清楚如何编写代码?
【问题讨论】:
-
您可以将模型拟合到整整 4 年的数据中,然后调用 60 步的预测方法(例如
hw_fit.forecast(steps=60))。 -
谢谢。有用。但是,如果我想将其可视化为“观察销售额(过去 4 年的销售额)和预测销售额(未来五年的销售额)”,我应该如何编写代码?
标签: python machine-learning time-series statsmodels