Операнды Statsmodels не могли быть переданы вместе в серии панд - PullRequest
0 голосов
/ 21 июня 2019

В настоящее время я использую библиотеку 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: нельзя было передавать операнды вместе с фигурами в серии

В этом посте он сказал, что это будет работать, если вы установите частоту на единицу меньше, чем длина набора данных. Это не работает для меня, хотя. Любая помощь будет оценена. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...