# Databricks notebook source
# MAGIC %md
# MAGIC # Nordvella: pierwszy eksperyment w MLflow
# MAGIC Notebook do artykułu „Czym jest Databricks - kompletny przewodnik” (blog JSystems).
# MAGIC Wymaga tabeli `sales_gold_monthly` z potoku Lakeflow (plik 03_pipeline_sprzedaz.sql).

# COMMAND ----------

import mlflow
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_percentage_error
from sklearn.model_selection import train_test_split

df = spark.table("workspace.nordvella_lakehouse.sales_gold_monthly").toPandas()
df["year"] = pd.to_datetime(df["month"]).dt.year
df["month_no"] = pd.to_datetime(df["month"]).dt.month

X = pd.get_dummies(df[["year", "month_no", "region"]], columns=["region"], dtype=int)
y = df["net_sales"].astype(float)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

mlflow.sklearn.autolog()
with mlflow.start_run(run_name="prognoza_sprzedazy_rf"):
    model = RandomForestRegressor(n_estimators=200, random_state=42).fit(X_train, y_train)
    mape = mean_absolute_percentage_error(y_test, model.predict(X_test))
    mlflow.log_metric("test_mape", mape)

print(f"Średni błąd procentowy prognozy (MAPE): {mape:.1%}")
