You need to agree to share your contact information to access this model
This repository is publicly accessible, but you have to accept the conditions to access its files and content.
This model is released under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 licence (CC BY-NC-SA 4.0): research, academic, personal and other non-commercial use is permitted with attribution; adaptations must be shared under the same licence; commercial use is not permitted. The original public source data remains under the Government Open Data License - India (GODL-India). Commercial use: contact surya@judicialmind.ai or hello@judicialmind.ai.
Log in or Sign Up to review the conditions and access this model content.
BharatTab-FM
Licence: CC BY-NC-SA 4.0 — research and non-commercial use only; derivatives must be shared under the same licence. Commercial use: contact surya@judicialmind.ai or hello@judicialmind.ai
Access is approved automatically when the email you enter matches your Hugging Face account email and belongs to the organisation you name; other requests are reviewed manually.
A tabular foundation model for regression on Indian administrative data: TabICL v2 (regressor) fine-tuned on regression tables built from Indian open government data. Like TabICL it needs no training per dataset: fit stores the labelled rows as context and predict answers new rows in one forward pass. One checkpoint, bharattab_fm.ckpt, loaded with the tabicl package.
Headline result: on the BharatTab benchmark BharatTab-FM beats the tuned LightGBM baseline on 15 of 17 district-level tasks (test R2), with no per-task training.
Base model: TabICL v2 regressor (jingang/TabICL, soda-inria/tabicl), BSD-3-Clause.
Quickstart
pip install -r requirements.txt # from this repo; pins tabicl==2.2.0, torch==2.13.0
import numpy as np
import pandas as pd
from huggingface_hub import hf_hub_download
from tabicl import TabICLRegressor
ckpt = hf_hub_download("judicialmind/BharatTab-FM", "bharattab_fm.ckpt") # gated: accept the terms, `hf auth login`
reg = TabICLRegressor(model_path=ckpt, n_estimators=8, random_state=0, device="cpu") # or device="cuda"
# one task of the BharatTab benchmark (dataset repo judicialmind/BharatTab)
task = "udyam_registrations"
train, test = (pd.read_parquet(hf_hub_download("judicialmind/BharatTab", f"tasks/{task}/{s}.parquet",
repo_type="dataset")) for s in ("train", "test"))
feats = [c for c in train.columns if c.startswith("f:") or c.startswith("lag")]
X, Xt = train[feats].to_numpy(float), test[feats].to_numpy(float)
med = np.nan_to_num(np.nanmedian(X, axis=0)) # fill missing values with train medians
keep = np.isfinite(X).any(axis=0) # drop columns that are empty in train
fill = lambda A: np.where(np.isfinite(A), A, med)[:, keep]
reg.fit(fill(X), train["y"].to_numpy())
pred = reg.predict(fill(Xt)) # numpy array (n_test,), same units as y
y = test["y"].to_numpy()
print(pred.shape, np.round(pred[:3], 3))
print(f"{task}: test R2 = {1 - ((y - pred) ** 2).sum() / ((y - y.mean()) ** 2).sum():.3f}")
Output (CPU, about 30 s): predictions of shape (135,), first three [7.116 7.675 7.583]; udyam_registrations: test R2 = 0.971.
Input. fit(X, y): X a numeric array or DataFrame of shape (n_train, n_features) without missing values (fill them first, as above), y a numeric vector of length n_train. predict(X_test): same columns. Output. predict returns a numpy float array of shape (n_test,) in the units of y. Any regression table works the same way; n_estimators (ensemble size over feature / row permutations) trades speed for accuracy.
Files
| file | content |
|---|---|
bharattab_fm.ckpt |
the model: TabICL checkpoint ({"config", "state_dict"}, fp32, 28.5M parameters), loaded by TabICLRegressor(model_path=...) |
requirements.txt |
pinned runtime dependencies |
Results
Test R2 on the BharatTab benchmark (17 district-level tasks; spatial tasks hold out whole states, temporal tasks the latest year). tabicl_ft is BharatTab-FM (n_estimators=8); lightgbm is the tuned LightGBM baseline. The 15 tasks where BharatTab-FM leads are shown; all 17 tasks and every baseline are in BharatTab's leaderboard.json. BharatTab's evaluate.py --models tabicl_ft --tabicl-ckpt bharattab_fm.ckpt reproduces the tabicl_ft column.
| task | kind | lightgbm | tabicl_ft |
|---|---|---|---|
| crop_yield_maize_kharif | temporal | 0.760 | 0.821 |
| crop_yield_mustard_rabi | temporal | 0.548 | 0.607 |
| crop_yield_rice_kharif | temporal | 0.735 | 0.777 |
| crop_yield_wheat_rabi | temporal | 0.616 | 0.801 |
| hmis_institutional_delivery_share | spatial | 0.786 | 0.814 |
| hmis_penta3_penta1_ratio | spatial | -0.781 | -0.182 |
| hmis_sex_ratio_at_birth | spatial | -0.785 | -0.021 |
| pmkisan_beneficiaries_next_year | temporal | 0.742 | 0.745 |
| udise_enrolment_next_year | temporal | 0.948 | 0.981 |
| udise_girls_toilet_share | spatial | -1.878 | 0.092 |
| udise_govt_enrolment_share | spatial | 0.200 | 0.389 |
| udise_ptr_next_year | temporal | 0.885 | 0.908 |
| udise_pupil_teacher_ratio | spatial | 0.619 | 0.685 |
| udise_school_electricity_share | spatial | 0.017 | 0.018 |
| udyam_registrations | spatial | 0.943 | 0.971 |
Coverage
Fine-tuned on "predict one column from the others" regression tasks drawn from Indian government tables published on data.gov.in and NITI Aayog NDAP (national, state and district statistics). Tables from the sources of the BharatTab targets (HMIS, UDISE+, PM-KISAN, Udyam, crop area-production-yield statistics) were left out, so the BharatTab results above are out-of-sample. The model works on any numeric regression table.
Source data
Source data: Open Government Data Platform India (data.gov.in) and NDAP (ndap.niti.gov.in), used under the Government Open Data License - India (GODL-India), https://data.gov.in/government-open-data-license-india. Aggregates only; no personal data.
The base model is BSD-3-Clause (TabICL).
Original data: published by the Indian ministries, departments and agencies that published the data.gov.in and NITI Aayog NDAP tables used for fine-tuning on the Open Government Data Platform India (data.gov.in) and, where marked, NITI Aayog's National Data and Analytics Platform (NDAP), under the Government Open Data License - India (GODL-India). The original public data remains under GODL-India; the CC BY-NC-SA 4.0 licence of this repository covers JudicialMind's compilation, derived fields, annotations, benchmarks and models.
Citation
@misc{judicialmind2026bharattabfm,
title = {BharatTab-FM: A Tabular Foundation Model for Indian Administrative Data},
author = {JudicialMind},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/judicialmind/BharatTab-FM}}
}
License
CC BY-NC-SA 4.0 (see LICENSE): research, academic, personal and other non-commercial use, with attribution to JudicialMind and to the original data publishers; adaptations must be shared under the same licence. Commercial use requires a separate licence.
Commercial use: contact surya@judicialmind.ai or hello@judicialmind.ai.
Base model(s): jingang/TabICL (bsd-3-clause). Their licence terms and notices continue to apply to the upstream components; see THIRD_PARTY_NOTICES.md.
Model tree for judicialmind/BharatTab-FM
Base model
jingang/TabICL