ARTIFACT_PATH = "model"
DATA_PATH = "./data"
HORIZON = 7
LEVEL = [90]
with mlflow.start_run() as run:
series = generate_series(5, min_length=50, max_length=50, equal_ends=True, n_static_features=1)
train_df = series.groupby('unique_id').head(43)
test_df = series.groupby('unique_id').tail(7)
X_test = test_df.drop(columns=["y"])
y_test = test_df[["y"]]
models = [AutoARIMA(season_length=7)]
sf = StatsForecast(models=models, freq="D", n_jobs=-1)
sf.fit(df=train_df)
# Evaluate model
y_pred = sf.predict(h=HORIZON, X_df=X_test, level=LEVEL)["AutoARIMA"]
metrics = {
"mae": mean_absolute_error(y_test, y_pred),
"mape": mean_absolute_percentage_error(y_test, y_pred),
}
print(f"Metrics: \n{metrics}")
# Log metrics
mlflow.log_metrics(metrics)
# Log model using pickle serialization (default).
mlflavors.statsforecast.log_model(
statsforecast_model=sf,
artifact_path=ARTIFACT_PATH,
serialization_format="pickle",
)
model_uri = mlflow.get_artifact_uri(ARTIFACT_PATH)
print(f"\nMLflow run id:\n{run.info.run_id}")