В настоящее время я использую библиотеку Statsmodels для прогнозирования. Я пытаюсь запустить тройное экспоненциальное сглаживание с учетом сезонности, тренда и коэффициента сглаживания, но получаю ошибки. Вот пример серии панд с уже установленной частотой:
2018-01-01 25
2018-02-01 30
2018-03-01 40
2018-04-01 38
2018-05-01 33
2018-06-01 36
2018-07-01 34
2018-08-01 35
2018-09-01 37
2018-10-01 41
2018-11-01 36
2018-12-01 32
2019-01-01 31
2019-02-01 29
2019-03-01 28
2019-04-01 29
2019-05-01 30
Freq: MS, dtype:float64
Вот мой код:
import pandas as pd
from statsmodels.tsa.holtwinters import ExponentialSmoothing, SimpleExpSmoothing
def triple_expo(input_data_set, output_list1):
data = input_data_set
model1 = ExponentialSmoothing(data, trend='add', seasonal='mul', damped=False, seasonal_periods=12, freq='M').fit(smoothing_level=0.1, smoothing_slope=0.1, smoothing_seasonal=0.1, optimized=False)
fcast1 = model1.forecast(12)
fcast_list1 = list(fcast1)
output_list1.append(fcast_list1)
for product in unique_products:
product_slice = sorted_product_df["Product"] == product
unique_slice = sorted_product_df[product_slice]
amount = unique_slice["Amount"].tolist()
index = unique_slice["Date"].tolist()
unique_series = pd.Series(amount, index)
unique_series.index = pd.DatetimeIndex(unique_series.index, freq=pd.infer_freq(unique_series.index))
triple_expo(unique_series, triple_out_one)
У меня изначально не было частотного аргумента, потому что я следовал примеру на сайте statsmodels, который находится здесь: http://www.statsmodels.org/stable/examples/notebooks/generated/exponential_smoothing.html
Они вообще не передавали частотный аргумент, поскольку выводили его, используя DateTimeIndex в пандах. Когда у меня нет аргумента частоты, моя ошибка заключается в том, что «операнды не могут передаваться вместе с фигурами <5,> <12,>». У меня есть данные за 17 месяцев, и панды распознают их как «Мисс». 5 и 12 относятся к 17. Затем я передаю freq = 'M', как в примере кода, и получаю «Данный частотный аргумент несовместим с данным индексом». Затем я пытаюсь установить все: от len (data) до len (data) -1 и всегда получаю ошибки. Я попытался использовать len (data) -1, потому что я изначально ссылался на этот стековый пост: season_decompose: нельзя было передавать операнды вместе с фигурами в серии
В этом посте он сказал, что это будет работать, если вы установите частоту на единицу меньше, чем длина набора данных. Это не работает для меня, хотя. Любая помощь будет оценена. Спасибо!