Instructions to use wafaaberber/chess-elo-models with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Scikit-learn
How to use wafaaberber/chess-elo-models with Scikit-learn:
# ⚠️ Model filename not specified in config.json
- Notebooks
- Google Colab
- Kaggle
Chess Elo estimator (Lichess, bullet / blitz / rapid)
Estimates the rating of a Lichess player from 10 of their games already analysed by Lichess, with an 80% uncertainty interval and a style profile. One LightGBM model per time control.
These files are used by the web service of the project; code, method and documentation: https://github.com/wafaaBerrais/chess-elo-prediction-player-profiling
- Published from Git commit
8ec2ea9on 2026-10-14T16:19:43+00:00 - Model versions (first characters of the SHA-256 of each model file): bullet
8f9382d76ebd, blitz66efe74e66df, rapiddfde063955e0
Results on held-out players
20% of the players of each time control were held out before training and tuning.
| Time control | Test MAE (Elo) | Test R² | Test players | Real Elo inside the 80% interval (3 / 5 / 10 games) | η² style → Elo | Style traits from |
|---|---|---|---|---|---|---|
| Bullet | 177.3 | 0.50 | 140 | 78% / 79% / 82% | 0.023 | tempo, error_risk, time_pressure |
| Blitz | 155.6 | 0.57 | 140 | 80% / 80% / 81% | 0.006 | tempo, time_pressure |
| Rapid | 158.4 | 0.50 | 98 | 78% / 78% / 71% | 0.005 | tempo, time_pressure |
Files
| Path | Content |
|---|---|
models/<time_control>/model.skops |
scikit-learn pipeline (median imputation + LightGBM), skops format |
models/<time_control>/uncertainty.json |
interval calibration, by number of games |
models/<time_control>/style_reference.json |
reference population for the style profiles |
reports/<time_control>/*.json |
test metrics, interval coverage, profile quality |
manifest.json |
Git commit and model versions |
Load a model (only the listed classes can be rebuilt; a skops file cannot run arbitrary code):
import skops.io
model = skops.io.load("models/blitz/model.skops", trusted=[
"collections.OrderedDict", "numpy.dtype",
"lightgbm.basic.Booster", "lightgbm.sklearn.LGBMRegressor",
])
model.feature_names_in_ # the 213 expected features, in order
The 213 features are computed from the games by the code of the GitHub repository
(chess_elo.features); the model cannot be used without it.
Training data
About 1,900 Lichess players sampled across Elo buckets from 1000 to 2200, 30 rated games each, all analysed by Lichess's server-side Stockfish; 10 games per player are used. The target is the player's mean rating over the games. The dataset is not published, and these files contain no username or game identifier.
Intended use and limits
- A demonstration of a few-shot rating estimate and of style description, not an official rating.
- Only games already analysed by Lichess can be used.
- Estimates are pulled towards the middle of the scale: the interval contains the real Elo less often for players below 1400 or above 2000 than for those in between.
- In bullet, estimates from a PGN file are less precise (clocks rounded to the second).
- Style traits are shown only for dimensions that are stable with 10 games.
- Downloads last month
- -