| --- |
| license: mit |
| library_name: xgboost |
| tags: |
| - tabular-regression |
| - traffic-prediction |
| - geospatial |
| - xgboost |
| metrics: |
| - r2 |
| --- |
| |
| # Flipkart Gridlock 2.0 — Spatial Traffic Demand Model |
|
|
| An `XGBRegressor` checkpoint (native XGBoost JSON format) trained for the |
| **Flipkart Gridlock 2.0** traffic demand prediction competition. Predicts a |
| 0–1 traffic demand score for a given geohash location and 15-minute time |
| slot. |
|
|
| Code, feature engineering, and training pipeline: [github.com/adarshcod30/Flipkart-Gridlock-2.0](https://github.com/adarshcod30/Flipkart-Gridlock-2.0) |
|
|
| ## Why this lives here instead of on GitHub |
|
|
| The repo's git history originally shipped a much larger (148MB), differently |
| trained checkpoint that GitHub's 100MB file-size limit rejects outright — and |
| that checkpoint was trained on a feature set that didn't even match the |
| inference code shipped alongside it (see the GitHub repo's `docs/APPROACH.md` |
| for the full story). This is the retrained, verified, and correctly-matched |
| replacement: small enough to version normally, and its accuracy is backed by |
| real cross-validation rather than a bare leaderboard number. |
|
|
| ## Model details |
|
|
| - **Architecture:** XGBoost gradient-boosted trees (`max_depth=6`, `n_estimators=600`, `learning_rate=0.05`, L1/L2 regularized) |
| - **Input:** 109 features — decoded lat/lon, cyclical time index, a 96-slot day-48 historical demand profile per geohash, plus road/vehicle/weather covariates |
| - **Output:** predicted `demand` ∈ [0, 1] |
| - **Training data:** 7,872 day-49 rows from the competition's `train.csv` (day 48 is used only as a historical-profile feature, never trained on directly, to avoid leaking a row's own label into its own inputs) |
|
|
| ## Performance |
|
|
| 5-fold cross-validated R² on the training rows: |
|
|
| | Fold | R² | |
| |---|---| |
| | 1 | 0.9589 | |
| | 2 | 0.9608 | |
| | 3 | 0.9578 | |
| | 4 | 0.9518 | |
| | 5 | 0.9593 | |
| | **Mean ± std** | **0.9577 ± 0.0031** | |
|
|
| Full fold-by-fold output: `metrics.json` in this repo. |
|
|
| ## Usage |
|
|
| ```python |
| from huggingface_hub import hf_hub_download |
| from xgboost import XGBRegressor |
| |
| model_path = hf_hub_download(repo_id="adarshcod30/flipkart-gridlock-2.0", filename="spatial_model.json") |
| model = XGBRegressor() |
| model.load_model(model_path) |
| |
| # Feature order and construction must match src/gridlock/features.py |
| # in the GitHub repo (ALL_FEATURES) — this checkpoint has no meaning |
| # outside that exact 109-feature pipeline. |
| predictions = model.predict(X) |
| ``` |
|
|
| ## Limitations |
|
|
| - Trained on exactly two days of one competition's traffic data (days 48–49); not a general-purpose traffic model. |
| - The 96-column historical profile feature requires day-48 demand data for the same geohash set — it will not generalize to unseen cities or geohash grids without rebuilding that profile from new historical data. |
|
|