Spaces:
Sleeping
Sleeping
File size: 2,748 Bytes
810e63d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | """
Central config β paths, constants, feature definitions.
"""
from pathlib import Path
# ββ Paths ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ROOT = Path(__file__).resolve().parents[1]
DATA_RAW = ROOT / "data" / "raw"
DATA_PROC = ROOT / "data" / "processed"
MODELS_DIR = ROOT / "models"
REPORTS_DIR = ROOT / "reports"
FIGURES_DIR = REPORTS_DIR / "figures"
TRAIN_PARQUET = DATA_PROC / "train.parquet"
TEST_PARQUET = DATA_PROC / "test.parquet"
# ββ Dataset ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# M5 competition (Walmart sales) loaded via datasetsforecast
# 42,840 series Γ 1941 daily obs. We use a representative subset.
DATASET_NAME = "m5"
# We cap the portfolio subset at N_SERIES series (100 per store Γ 3 stores).
# Full M5 has 30,490 series β too large for a portfolio demo.
N_SERIES = 300 # total series cap (evenly distributed across stores)
TARGET_COL = "y"
DATE_COL = "ds"
ID_COL = "unique_id"
# ββ Forecast horizon βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
HORIZON = 28 # 28-day ahead forecast (same as M5 competition)
FREQ = "D" # Daily
# ββ Train / validation split βββββββββββββββββββββββββββββββββββββββββββββββ
# Keep last HORIZON days as validation set (walk-forward style)
VAL_SIZE = HORIZON
# ββ MLflow βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
MLFLOW_EXPERIMENT = "demand-forecasting"
# ββ Random seed ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
RANDOM_SEED = 42
# ββ Model save paths βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LGBM_MODEL_PATH = MODELS_DIR / "lgbm_model.pkl"
CHRONOS_MODEL_NAME = "amazon/chronos-t5-small" # ~250MB, good balance speed/accuracy
FORECAST_CACHE = MODELS_DIR / "forecast_cache.parquet"
MODEL_META_PATH = MODELS_DIR / "model_meta.json"
|