为什么我的预测预测以NaN的形式出现?

时间:2019-05-28 23:10:31

标签: python jupyter exponential holtwinters

我的问题很简单,我知道我遗漏了一些非常明显的东西,我只是不知道这是什么。...

我对Holt-Winters的测试预测是NaN,我不知道为什么。有人可以帮忙吗?

我正在使用Jupyter笔记本,并尝试使用Holt-Winters方法预测一个SKU的销售额。我什至甚至使用

这是我使用的代码:

导入执行Holt-Winters所需的库

将熊猫作为pd导入 将numpy导入为np %matplotlib内联

df = pd.read_csv('../ Data / M1045_White.csv',index_col ='Month',parse_dates = True)

将月份列设置为索引列

df.index.freq ='MS' df.index

df.head()

df.info() DatetimeIndex:48个条目,2015-05-01至2019-04-01 频率:MS 数据列(共7列): 销量48非null int64 EWMA12 48非空float64 SES12 47非空float64 DESadd12 47非空float64 DESmul12 47非空float64 TESadd12 48非空float64 TESmul12 12非空float64 dtypes:float64(6),int64(1) 内存使用量:3.0 KB

从statsmodels.tsa.holtwinters导入SimpleExpSmoothing

训练测试分组

train_data = df.iloc [:36]#上升到但不包括36 test_data = df.iloc [12:]

适合模型

fitted_model = exponentialSmoothing(train_data ['Sales'],trend ='mul',seasonal ='mul',seasonal_periods = 12).fit()

test_predictions = fit_model.forecast(12).rename('HW M1045 White Forecast')

test_predictions

这是我的预测结果:

2018-05-01 NaN 2018-06-01 NaN 2018-07-01 NaN 2018-08-01 NaN 2018-09-01 NaN 2018-10-01 NaN 2018-11-01 NaN 2018-12-01 NaN 2019-01-01 NaN 2019-02-01 NaN 2019-03-01 NaN 2019-04-01 NaN 频率:MS,名称:HW M1045 White Forecast,dtype:float64

有人可以指出我可能错过的内容吗?使用简单的解决方案,这似乎是一个简单的问题,但这却使我大吃一惊。

谢谢!

1 个答案:

答案 0 :(得分:0)

答案与将seasonal_periods变量设置为12有关。如果将其更新为6,则预测会得出实际值。我不是指数平滑的统计专家,因此无法理解为什么会出现这种情况。