Instructions to use adarshcod30/margadrishti-models with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Scikit-learn
How to use adarshcod30/margadrishti-models with Scikit-learn:
from huggingface_hub import hf_hub_download import joblib model = joblib.load( hf_hub_download("adarshcod30/margadrishti-models", "sklearn_model.joblib") ) # only load pickle files from sources you trust # read more about it here https://skops.readthedocs.io/en/stable/persistence.html - Notebooks
- Google Colab
- Kaggle
File size: 3,731 Bytes
55151a3 3069b9c 55151a3 3069b9c 55151a3 3069b9c 55151a3 | 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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | ---
license: mit
tags:
- tabular-regression
- tabular-classification
- spatiotemporal
- urban-mobility
- traffic
- onnx
library_name: sklearn
---
# MargaDrishti — Models
Trained artefacts for **[MargaDrishti](https://github.com/adarshcod30/MargaDrishti)**,
a spatio-temporal ML system over Bengaluru parking-violation and traffic-event
data (Nov 2023 – Apr 2024).
Live dashboard: **[adarshcod30/margadrishti](https://huggingface.co/spaces/adarshcod30/margadrishti)**
## Read this before using the numbers
**These models rank predicted _enforcement demand_, not where illegal parking
occurs.** `corr(log patrol_hours, log total_captures) = 0.96` across all 2,534
res-9 cells — about 93% of the
variance in per-cell violation counts is explained by how much patrolling
happened there. The project's own
[enforcement-bias audit](https://github.com/adarshcod30/MargaDrishti/blob/main/reports/fairness_audit.md)
returns **HIGH concern** on this system, and that is published rather than
buried: no Getis-Ord hotspot in the data survives exposure adjustment.
Two targets are **not** what a leaderboard row suggests:
- **B3 (priority) is a recovered rule, not a prediction.** Corridor status
predicts High priority at 99.84% (13 exceptions in 8,173 events). Scores near
1.0 reflect that rule.
- **A3 (capture rejection) is not yet answerable.** The review process changed
regime mid-window — February 2024 rejection jumped to 0.790 from ~0.28 while
volume collapsed sixfold — so every family is miscalibrated.
## What's here
| File | What it is |
|---|---|
| `onnx/b1_clearance_duration.onnx` | Event clearance duration (log1p minutes), RandomForest |
| `onnx/b2_road_closure.onnx` | Road-closure probability, RandomForest |
| `onnx/*.features.json` | **Exact input feature order** — ONNX takes a bare float array with no column names |
| `leaderboard.csv` | Module A: every family × A1/A2/A3 |
| `leaderboard_module_b.csv` | Module B: every family × B1–B4 |
| `model_cards/` | One card per target, generated from the leaderboards |
| `reports/` | Spatial statistics, CIS validation, enrichment ablation, fairness audit |
### Why RandomForest and not the leaderboard winner
The browser ships RandomForest because **onnxmltools misroutes ~1% of LightGBM
rows at split boundaries** — median divergence is float32 noise (4.3e-07) but 5
of 500 sample rows diverged by up to 0.09. skl2onnx converts RandomForest
exactly (max 1.0e-06; the classifier is bit-exact).
That trade is only defensible because the Module B leaderboard already put
random_forest at 0.5034 against xgboost's 0.4990 — a gap far inside the ±0.13
fold standard deviation. Exact client/server agreement costs no measurable
accuracy.
## Headline results
| Target | Best family | Metric | vs strongest baseline |
|---|---|---|---|
| A1 · parking intensity | xgboost | 0.4999 Poisson deviance | **+43.0%** |
| A2 · hotspot | random forest | 0.1365 PR-AUC | 46.9× base rate (0.291%) |
| A3 · capture rejection | xgboost | 0.3088 PR-AUC | *not answerable* |
| B1 · clearance duration | xgboost | 0.4990 ± 0.128 | +27.7% |
| B2 · road closure | catboost | 0.3615 ± 0.071 PR-AUC | 4.1× (8.7% prevalence) |
| B4 · cause from text | char n-gram + logreg | 0.478 macro-F1 | 10.8× |
B4's notable result is equity rather than accuracy: **English 0.483 vs Kannada
0.472**, essentially no language gap on a field that mixes both scripts.
## Reproduce
```bash
git clone https://github.com/adarshcod30/MargaDrishti
cd MargaDrishti && make data && make reproduce
```
Seed 42. Splits are chronological, never random.
## Licence
MIT. Source data are anonymised public releases and remain subject to their
original terms.
|