# M5 Demand Forecasting Artifacts ## What the models predict The models predict weekly demand (sales) for 28-day horizons (d_1942 through d_1969) for 30,490 M5 series. ## Exact input contract - Features must be computed as-of origin day d_1913 using only data with day index <= D - Categorical features must be encoded using categorical_maps.json with .map() - Feature order must match feature_schema.json feature_names element by element - All float columns must be float32; no float64 or object columns permitted - Target encoding (dept_id, store_id, item_id) is computed only on data before the origin (leakage-safe) ## Files required together Boosters alone are insufficient. Required files: - artifacts/feature_schema.json - artifacts/categorical_maps.json - artifacts/training_config.json - data/processed/m5_melted.parquet ## Known limitation Predictions valid only for recorded forecast origin unless history is supplied ## Recorded local WRMSSE per fold - Fold A: 148.327863 - Fold B: 121.276794 - Fold C: 167.073294 - Mean: 145.559317 ## Copy-pasteable load instructions ```python import lightgbm as lgb import pandas as pd models = {} for f in os.listdir('artifacts/models/'): model = lgb.Booster(model_file='artifacts/models/' + f) models[f] = model with open('artifacts/training_config.json') as f: config = json.load(f) with open('artifacts/feature_schema.json') as f: schema = json.load(f) with open('artifacts/categorical_maps.json') as f: cat_maps = json.load(f) df = pd.read_parquet('data/processed/m5_melted.parquet') ```