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.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for judicialmind/BharatTab-FM

Base model

jingang/TabICL
Finetuned
(4)
this model

Collection including judicialmind/BharatTab-FM