Die Holt-Winters-Methode kann nicht mithilfe der Statsmodels-Bibliothek implementiert werdenPython

Python-Programme
Anonymous
 Die Holt-Winters-Methode kann nicht mithilfe der Statsmodels-Bibliothek implementiert werden

Post by Anonymous »

Ich habe einmonatige Daten, die auf täglicher Basis vorliegen. Sie erfassen jeden Tag CPU-Auslastungsdaten. Ich möchte einige Prognoseergebnisse erstellen. Ich habe die Daten in zwei Teile aufgeteilt: Training – die ersten 15 Tage und Test, der die letzten 16 Tage dauert. Daraufhin möchte ich eine Prognose erstellen und das Prognoseergebnis mit dem angegebenen Ergebnis der letzten 16 Tage vergleichen. Bisher habe ich verschiedene Implementierungen ausprobiert, z als gleitender Durchschnitt, einfache exponentielle Glättung. Jetzt möchte ich etwas Komplexeres und Genaueres ausprobieren, wie die Holt-Winters-Methode und das ARIMA-Modell. Unten ist das Ergebnis, das ich für Holts lineare Trendmethode erhalte, die Trend und Saisonalität berücksichtigt.

Image


Jetzt möchte ich die Holts-Winter-Methode implementieren, die eine der bevorzugten Prognosetechniken ist. Hier ist der Code unten

Code: Select all

# get the first 15 days
df_train = psql.read_sql("SELECT date,cpu FROM {} where date between '{}' and '{} 23:59:59';".format(conf_list[1], '2018-03-02', '2018-03-16'), conn).fillna(0)
df_train["date"] = pd.to_datetime(df_train["date"], format="%m-%d-%Y")
df_train.set_index("date", inplace=True)
df_train = df_train.resample('D').mean().fillna(0)

# get the last 15 days
df_test = psql.read_sql("SELECT date,cpu FROM {} where date between '{}' and '{} 23:59:59';".format(conf_list[1], '2018-03-18', '2018-03-31'), conn).fillna(0)
df_test["date"] = pd.to_datetime(df_test["date"], format="%m-%d-%Y")
df_test.set_index("date", inplace=True)
df_test = df_test.resample('D').mean().fillna(0)
Hier ist der Code für Holts Winter-Methode

Code: Select all

y_hat_avg = df_test.copy()
fit1 = ExponentialSmoothing(np.asarray(df_train['cpu']), seasonal_periods=1, trend='add', seasonal='add',).fit()
y_hat_avg['Holt_Winter'] = fit1.forecast(len(df_test))
plt.figure(figsize=(16,8))
plt.plot(df_train['cpu'], label='Train')
plt.plot(df_test['cpu'], label='Test')
plt.plot(y_hat_avg['Holt_Winter'], label='Holt_Winter')
plt.legend(loc='best')
plt.show()
Jetzt erhalte ich eine Fehlermeldung für den Parameter „seasonal_periods“. Er akzeptiert eine Ganzzahl und ich glaube, er akzeptiert den Monat als Wert. Selbst in ihrer Dokumentation beziehen sie sich nur auf die Anzahl der Jahreszeiten http://www.statsmodels.org/dev/generate ... lSmoothing

Da ich jetzt nur Daten für 1 Monat habe, die ich für die ersten 15 Tage prognostizieren möchte, welchen Saisonwert sollte ich übergeben? Angenommen, die Jahreszeiten beziehen sich bis Monate, idealerweise sollte es 0,5 (15 Tage) sein, aber es werden nur ganze Zahlen akzeptiert. Wenn ich den Wert als 1 übergebe, erhalte ich die folgende Fehlermeldung

Code: Select all

Traceback (most recent call last):
File "/home/souvik/PycharmProjects/Pandas/forecast_health.py", line 89, in 
fit1 = ExponentialSmoothing(np.asarray(df_train['cpu']), seasonal_periods=1, trend='add', seasonal='add',).fit()
File "/home/souvik/data_analysis/lib/python3.5/site-packages/statsmodels/tsa/holtwinters.py", line 571, in fit
Ns=20, full_output=True, finish=None)
File "/home/souvik/data_analysis/lib/python3.5/site-packages/scipy/optimize/optimize.py", line 2831, in brute
Jout = vecfunc(*grid)
File "/home/souvik/data_analysis/lib/python3.5/site-packages/numpy/lib/function_base.py", line 2755, in __call__
return self._vectorize_call(func=func, args=vargs)
File "/home/souvik/data_analysis/lib/python3.5/site-packages/numpy/lib/function_base.py", line 2831, in _vectorize_call
outputs = ufunc(*inputs)
File "/home/souvik/data_analysis/lib/python3.5/site-packages/scipy/optimize/optimize.py", line 2825, in _scalarfunc
return func(params, *args)
File "/home/souvik/data_analysis/lib/python3.5/site-packages/statsmodels/tsa/holtwinters.py", line 207, in _holt_win_add_add_dam
return sqeuclidean((l + phi * b) + s[:-(m - 1)], y)
ValueError: operands could not be broadcast together with shapes (16,) (0,)
Wenn ich den Parameter None übergebe, erhalte ich die folgende Fehlermeldung

Code: Select all

Traceback (most recent call last):
File "/home/souvik/PycharmProjects/Pandas/forecast_health.py", line 89, in 
fit1 = ExponentialSmoothing(np.asarray(df_train['cpu']), seasonal_periods=None, trend='add', seasonal='add',).fit()
File "/home/souvik/data_analysis/lib/python3.5/site-packages/statsmodels/tsa/holtwinters.py", line 399, in __init__
'Unable to detect season automatically')
NotImplementedError: Unable to detect season automatically
Wie erhalte ich mit der Holt-Winters-Methode die Vorhersage für die letzten 16 Tage eines Monats? Was mache ich falsch?

Hier sind die Daten für den Monat, falls jemand die Ergebnisse reproduzieren möchte

Code: Select all

                                cpu
date
2018-03-01 00:00:00+00:00  1.060606
2018-03-02 00:00:00+00:00  1.014035
2018-03-03 00:00:00+00:00  1.048611
2018-03-04 00:00:00+00:00  1.493392
2018-03-05 00:00:00+00:00  3.588957
2018-03-06 00:00:00+00:00  2.500000
2018-03-07 00:00:00+00:00  5.265306
2018-03-08 00:00:00+00:00  0.000000
2018-03-09 00:00:00+00:00  3.062099
2018-03-10 00:00:00+00:00  5.861751
2018-03-11 00:00:00+00:00  0.000000
2018-03-12 00:00:00+00:00  0.000000
2018-03-13 00:00:00+00:00  7.235294
2018-03-14 00:00:00+00:00  4.011662
2018-03-15 00:00:00+00:00  3.777409
2018-03-16 00:00:00+00:00  5.754559
2018-03-17 00:00:00+00:00  4.273390
2018-03-18 00:00:00+00:00  2.328782
2018-03-19 00:00:00+00:00  3.106048
2018-03-20 00:00:00+00:00  5.584877
2018-03-21 00:00:00+00:00  9.869841
2018-03-22 00:00:00+00:00  5.588215
2018-03-23 00:00:00+00:00  3.620377
2018-03-24 00:00:00+00:00  3.468021
2018-03-25 00:00:00+00:00  2.605649
2018-03-26 00:00:00+00:00  3.670559
2018-03-27 00:00:00+00:00  4.071777
2018-03-28 00:00:00+00:00  4.159690
2018-03-29 00:00:00+00:00  4.364939
2018-03-30 00:00:00+00:00  4.743253
2018-03-31 00:00:00+00:00  4.928571

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post