XGBoostLSS: the feature list and the base install disagree
An extension of XGBoost to probabilistic modelling
At a glance
- What is it?
- XGBoostLSS turns XGBoost into a distributional model by deriving gradients through PyTorch autograd. Optuna and SHAP are advertised beside that and ship in an extras group, tqdm is pinned to a two-release window, and Python 3.14 is a declared target with no shap.
- Who is it for?
- XGBoostLSS fits an applied modeller who needs quantiles and prediction intervals out of a gradient boosted model without hand-writing a distributional loss, and who is content to inherit PyTorch and Pyro in the same environment. It does not fit someone who wants a light install: the base package carries two deep learning dependencies under a comment about keeping the set minimal, and two of the ten advertised features live in all_extras.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 9 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 8, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Optuna and SHAP are advertised features the base install omits
Two of the ten items in the feature list are not in the base install. Automated hyper-parameter search with pruning is credited to Optuna, and explaining the output is credited to SHapley Additive exPlanations. In pyproject.toml, `optuna`, `optuna-integration`, `seaborn` and `shap` all sit in the `all_extras` group rather than in `dependencies`. The README offers two install routes and neither carries an extras marker:
pip install git+https://github.com/StatMixedML/XGBoostLSS.git
pip install xgboostlssSo a reader who runs either command gets neither the search nor the explanations, while the feature list places both in the same run as automatic gradient derivation and multi-target regression.
tqdm is clamped to a two-release window
Every entry in the core dependency list carries a floor and a ceiling, and one of those ceilings is two patch releases wide. `tqdm>=4.66,<4.68` is the narrowest constraint in the file. It sits beside `numpy>=1.26.0,<2.4`, `pandas>=2.0,<4.0`, `torch>=2.1,<2.10` and `scipy>=1.11,<1.17`, which is a deliberate shape: the numerics and the deep learning backend float across minor versions while the progress bar does not move. The one entry with no constraint at all is `scikit-base`, which appears as a bare name. So eight libraries are ranged carefully, one is clamped to a hair, and one is left open.
Python 3.14 is declared, and shap stops below it
`requires-python` is `>=3.11`, and the classifiers enumerate 3.11, 3.12, 3.13 and 3.14. The `all_extras` group then attaches an environment marker to shap: `shap>=0.50.0; python_version < "3.14"`. Read together, the package declares support for 3.14 and withholds the only explainability dependency on exactly that version. A user on the newest interpreter the metadata invites has no route to the feature described as explaining the output of XGBoostLSS, and nothing in pyproject.toml explains the exclusion. The README asks readers to open a discussion to request additional distributions, but says nothing about interpreter coverage.
The downloads badge cell is empty and the counter is hidden
The badge table at the top is a single HTML table row wrapped in an `h4` element, and one of its cells holds nothing. The row order is Documentation and Release Notes, then Open Source, then CI/CD, then Code, then Downloads, then Citation. The Downloads cell is empty, and the reason sits in an HTML comment further down the file: that comment carries a hit counter pointing at `hits.dwyl.com/StatMixedML/XGBoostLSS`, an issue link to `dwyl/esta`, an opensource.org licence badge, and a host written as `StatMixedML.github.io` where the live links below use lowercase. The counter was moved out of view and the cell was left in place, so the table reserves a row for a badge it no longer renders.
The news list records a v0.5.0 the release feed does not have
The release feed and the news list disagree with each other. The feed shows v0.6.1 published on 2025-12-11 at 14:00, v0.6.0 published the same day at 11:08, and then v0.4.0 on 2023-08-25. The news list records a v0.5.0 release on 2025-10-31 that has no entry in that feed, and it dates the PyPI publication to 2024-01-19, months after the 0.4.0 tag it sits below. Two minor versions also shipped about three hours apart on a single day. The package version is a hardcoded `version = "0.6.1"`, so the same number appears in the metadata, in the news list and in the citation block, and nothing regenerates any of them.
Three arXiv links render with their titles hidden
The reference section shows three link rows with no titles beside them. The visible addresses are the arXiv entries 2210.06831, 2204.00778 and 1907.03178, each followed by a line break and nothing else. The readable titles sit in an HTML comment directly below, and they are the ones that identify the papers: Multi-Target XGBoostLSS Regression, Distributional Gradient Boosting Machines, and XGBoostLSS, An extension of XGBoost to probabilistic forecasting, the first two by Alexander März and the third by the same author. So a reader of the rendered page sees three anonymous links, and the mapping from link to paper exists in the file while staying invisible on the page.
LICENSE.txt, a text-form licence field, and a hardcoded citation version
The licence file at the repository root is `LICENSE.txt`, not `LICENSE`, so GitHub does not render it on the page, and the badge that would point at an opensource.org licence page is inside the hidden comment block. The packaging metadata records `license = { text = "Apache License 2.0" }`, the long form text rather than the SPDX identifier, next to one classifier reading `License :: OSI Approved :: Apache Software License`. The citation block is pinned to a version as well, with a note field reading GitHub repository, Version 0.6.1. That string is typed by hand inside a `@misc` entry, so the version a reader copies into a bibliography is a manual duplicate of a number that also sits in pyproject.toml.
No distributional derivative is written by hand
The central mechanism is that the derivatives come from autograd. Automatic derivation of the gradients and the Hessian of every distributional parameter is credited to PyTorch, and the core dependency list makes that structural rather than optional: `torch>=2.1,<2.10` and `pyro-ppl>=1.8,<1.10` are mandatory, sitting under a comment in pyproject.toml that reads this set should be kept minimal. Every user of a distributional gradient boosted model therefore also installs a deep learning framework and a probabilistic programming language, whether or not either is touched directly. Normalizing flows, mixture densities, and zero-adjusted and zero-inflated families all arrive through the same route.
Editorial conclusion
XGBoostLSS fits an applied modeller who needs quantiles and prediction intervals out of a gradient boosted model without hand-writing a distributional loss, and who is content to inherit PyTorch and Pyro in the same environment. It does not fit someone who wants a light install: the base package carries two deep learning dependencies under a comment about keeping the set minimal, and two of the ten advertised features live in all_extras. Check three things before adopting it. Check whether the distributions you need appear on the linked inventory, because the README defers that list to the documentation site instead of printing it. Check that the interpreter still matches shap, because Python 3.14 is a declared target and shap stops below it. Check that the version you paste into a citation, 0.6.1, is the one you actually installed.
Frequently asked questions
Does the base XGBoostLSS install include Optuna and SHAP?
No. optuna, optuna-integration, seaborn and shap all sit in the all_extras group of pyproject.toml, while the feature list presents hyper-parameter search and SHAP explanations alongside the core capabilities.
Which Python versions does XGBoostLSS support?
requires-python is >=3.11, with classifiers for 3.11, 3.12, 3.13 and 3.14. The shap entry in all_extras carries the marker python_version < "3.14", so that extra is unavailable on the newest declared target.
How do I install XGBoostLSS from source?
The README gives pip install git+https://github.com/StatMixedML/XGBoostLSS.git for the development version, and pip install xgboostlss for the PyPI build.
Which distributions can XGBoostLSS model?
The README does not print the list. It points at the distributions page of the documentation site, and describes the framework as built on PyTorch and Pyro covering continuous, discrete and mixed discrete-continuous families.
What does XGBoostLSS require at runtime?
xgboost, torch, pyro-ppl, numpy, pandas, scipy, tqdm, matplotlib and scikit-base. tqdm is pinned to >=4.66,<4.68 and scikit-base carries no version constraint at all.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/statmixedml-xgboostlss)