Brian Head
10/12/2023, 1:11 PMJason Gofford
10/12/2023, 1:16 PMBrian Head
10/12/2023, 1:53 PMTyler Blume
10/12/2023, 3:11 PMJosé Morales
10/12/2023, 6:06 PMBrian Head
10/12/2023, 6:07 PMJosé Morales
10/12/2023, 6:08 PMBrian Head
10/12/2023, 6:48 PMJason Gofford
10/12/2023, 7:36 PMX_df
Tyler Blume
10/12/2023, 7:40 PMJosé Morales
10/12/2023, 8:13 PMBrian Head
10/12/2023, 8:45 PMJosé Morales
10/12/2023, 10:12 PMBrian Head
10/16/2023, 2:36 PMTyler Blume
10/16/2023, 2:41 PMBrian Head
10/16/2023, 2:46 PMTyler Blume
10/16/2023, 2:58 PMBrian Head
10/16/2023, 3:42 PMJosé Morales
10/16/2023, 4:47 PMimport pandas as pd
from statsforecast import StatsForecast
from statsforecast.models import MSTL, _predict_mstl_seas
from statsforecast.utils import generate_series
# fit+predict (right now I predict to get the future df structure, but you could use the MSTL prediction as well)
series = generate_series(10)
season_length = 7
horizon = 7
sf = StatsForecast(
models=[MSTL(season_length=season_length)],
freq='D',
)
preds = sf.fit_predict(df=series, h=horizon).reset_index().drop(columns='MSTL')
# extract features
train_features = []
future_features = []
for model in sf.fitted_[:, 0]:
train_features.append(model.model_[['trend', 'seasonal']])
future_df = pd.DataFrame({
'trend': model.trend_forecaster.predict(horizon)['mean'],
'seasonal': _predict_mstl_seas(model.model_, horizon, season_length)
})
future_features.append(future_df)
train_df = pd.concat([series, pd.concat(train_features).reset_index(drop=True)], axis=1)
X_df = pd.concat([preds, pd.concat(future_features).reset_index(drop=True)], axis=1).reset_index(drop=True)
Brian Head
10/16/2023, 6:17 PMJason Gofford
10/28/2023, 5:31 AMJosé Morales
11/15/2023, 9:39 PMBrian Head
11/15/2023, 9:54 PMJosé Morales
11/15/2023, 10:17 PM