Я пытаюсь выполнить прогноз HoltsWinter по набору данных, но я борюсь с форматом, который должен иметь мои данные.
1) Я хочу прогнозировать несколько временных рядов одновременно, используя групповой объект. 2) Я хочу сделать прогноз на следующие 3 месяца.
Я сделал это:
data1 = d1.merge(data3)
data1['Date'] =pd.to_datetime(data1['Date'])
data1 = data1[data1.Id.apply(lambda x: x.isnumeric())]
data2 = data1.groupby('Id').apply(lambda x: x.set_index('Date').resample('D').sum())['Quantity'].reset_index()
######################################################training model#######################################################
train = data1[(data1['Date'] <= '2019-08-01')]
test = data1[(data1['Date'] >= '2019-08-01')]
train_gp = train.sort_values('Date').groupby(['Id', 'Date'], as_index=False)
train_gp = train_gp.agg({'Quantity': ['mean']})
train_gp.columns = ['Id', 'Date', 'Quantity']
test_gp = test.sort_values('Date').groupby(['Id', 'Date'], as_index=False)
test_gp = test_gp.agg({'Quantity': ['mean']})
test_gp.columns = ['Id', 'Date', 'Quantity']
, что дает мне такую таблицу (для данных поезда):
Id Date Quantity
0 100121 2017-03-01 1.0
1 100121 2017-03-02 72.0
2 100121 2017-03-08 3.0
3 100121 2017-03-10 72.0
4 100121 2017-03-29 72.0
... ... ... ...
52130 572000 2019-02-12 1.0
52131 572000 2019-03-13 5.0
52132 572000 2019-04-25 1.0
52133 572000 2019-06-04 2.0
52134 572000 2019-07-09 1.5
затем я применяю модель:
holtt = ExponentialSmoothing(train_gp, trend = 'additive', damped=False, seasonal= None).fit()
holtf = holtt.forecast(Steps=len(test_gp))
holtf = pd.DataFrame(holtf).set_index(test_gp.index)
и получаю ошибку:
ValueError: Pandas data cast to numpy dtype of object. Check input data with np.asarray(data).
Я знаю, что эта ошибка происходит из типа данных столбца «Дата», но Я не знаю, как это изменить.
У кого-нибудь есть предложения по этой модели прогнозирования и как решить эту ошибку?