:rocket: Version 2.15.1 out now! Read the release notes here..
skpro is a library for supervised probabilistic prediction in python.
It provides scikit-learn-like, scikit-base compatible interfaces to:
- tabular supervised regressors for probabilistic prediction - interval, quantile and distribution predictions
- tabular probabilistic time-to-event and survival prediction - instance-individual survival distributions
- metrics to evaluate probabilistic predictions, e.g., pinball loss, empirical coverage, CRPS, survival losses
- reductions to turn
scikit-learnregressors into probabilisticskproregressors, such as bootstrap or conformal - building pipelines and composite models, including tuning via probabilistic performance metrics
- symbolic probability distributions with value domain of
pandas.DataFrame-s andpandas-like interface
| Overview | |
|---|---|
| Open Source | |
| Tutorials | |
| Community | |
| CI/CD | |
| Code | |
| Downloads | |
| Citation |
:books: Documentation
| Documentation | |
|---|---|
| :star: Tutorials | New to skpro? Here's everything you need to know! |
| :clipboard: Binder Notebooks | Example notebooks to play with in your browser. |
| :woman_technologist: User Guides | How to use skpro and its features. |
| :scissors: Extension Templates | How to build your own estimator using skpro's API. |
| :control_knobs: API Reference | The detailed reference for skpro's API. |
| :hammer_and_wrench: Changelog | Changes and version history. |
| :deciduous_tree: Roadmap | skpro's software and community development plan. |
| :pencil: Related Software | A list of related software. |
:speech_balloon: Where to ask questions
Questions and feedback are extremely welcome! We strongly believe in the value of sharing help publicly, as it allows a wider audience to benefit from it.
skpro is maintained by the sktime community, we use the same social channels.
| Type | Platforms |
|---|---|
| :bug: Bug Reports | GitHub Issue Tracker |
| :sparkles: Feature Requests & Ideas | GitHub Issue Tracker |
| :woman_technologist: Usage Questions | GitHub Discussions · Stack Overflow |
| :speech_balloon: General Discussion | GitHub Discussions |
| :factory: Contribution & Development | dev-chat channel · Discord |
| :globe_with_meridians: Community collaboration session | Discord - Fridays 13 UTC, dev/meet-ups channel |
:dizzy: Features
Our objective is to enhance the interoperability and usability of the AI model ecosystem:
-
skprois compatible with scikit-learn and sktime, e.g., ansktimeproba forecaster can be built with anskproproba regressor which in ansklearnregressor with proba mode added byskpro -
skproprovides a mini-package management framework for first-party implementations, and for interfacing popular second- and third-party components, such as cyclic-boosting, MAPIE, or ngboost packages.
skpro curates libraries of components of the following types:
| Module | Status | Links |
|---|---|---|
| Probabilistic tabular regression | maturing | Tutorial · API Reference · Extension Template |
| Time-to-event (survival) prediction | maturing | Tutorial · API Reference · Extension Template |
| Performance metrics | maturing | API Reference |
| Probability distributions | maturing | Tutorial · API Reference · Extension Template |
:hourglass_flowing_sand: Installing skpro
To install skpro, use pip:
pip install skpro
or, with maximum dependencies,
pip install skpro[all_extras]
Releases are available as source packages and binary wheels. You can see all available wheels here.
:zap: Quickstart
Making probabilistic predictions
from sklearn.datasets import load_diabetes
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from skpro.regression.residual import ResidualDouble
# step 1: data specification
X, y = load_diabetes(return_X_y=True, as_frame=True)
X_train, X_new, y_train, y_test = train_test_split(X, y)
# step 2: specifying the regressor - any compatible regressor is valid!
# example - "squaring residuals" regressor
# random forest for mean prediction
# linear regression for variance prediction
reg_mean = RandomForestRegressor()
reg_resid = LinearRegression()
reg_proba = ResidualDouble(reg_mean, reg_resid)
# step 3: fitting the model to training data
reg_proba.fit(X_train, y_train)
# step 4: predicting labels on new data
# probabilistic prediction modes - pick any or multiple
# full distribution prediction
y_pred_proba = reg_proba.predict_proba(X_new)
# interval prediction
y_pred_interval = reg_proba.predict_interval(X_new, coverage=0.9)
# quantile prediction
y_pred_quantiles = reg_proba.predict_quantiles(X_new, alpha=[0.05, 0.5, 0.95])
# variance prediction
y_pred_var = reg_proba.predict_var(X_new)
# mean prediction is same as "classical" sklearn predict, also available
y_pred_mean = reg_proba.predict(X_new)
Evaluating predictions
# step 5: specifying evaluation metric
from skpro.metrics import CRPS
metric = CRPS() # continuous rank probability score - any skpro metric works!
# step 6: evaluat metric, compare predictions to actuals
metric(y_test, y_pred_proba)
>>> 32.19
:wave: How to get involved
There are many ways to get involved with development of skpro, which is
developed by the sktime community.
We follow the all-contributors
specification: all kinds of contributions are welcome - not just code.
| Documentation | |
|---|---|
| :gift_heart: Contribute | How to contribute to skpro. |
| :school_satchel: Mentoring | New to open source? Apply to our mentoring program! |
| :date: Meetings | Join our discussions, tutorials, workshops, and sprints! |
| :woman_mechanic: Developer Guides | How to further develop the skpro code base. |
| :medal_sports: Contributors | A list of all contributors. |
| :raising_hand: Roles | An overview of our core community roles. |
| :money_with_wings: Donate | Fund sktime and skpro maintenance and development. |
| :classical_building: Governance | How and by whom decisions are made in the sktime community. |
:wave: Citation
To cite skpro in a scientific publication, see citations.
Metadata
Release files for skpro 2.15.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| skpro-2.15.1.tar.gz | 383.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| skpro-2.15.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 952.0 kB
Release files / skpro-2.15.1.tar.gz
| Download URL | skpro-2.15.1.tar.gz |
|---|---|
| Size | 383.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5acbdc12a33a7d269513de0369ebd51833029de61d93558db1821be62ac25ab0
|
|
BLAKE2b-256 checksum How to use checksums |
a3400d24d86687622d41ab56e1ec92c13ce91bfb5605a9fc03f111f315e28601
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logRelease files / skpro-2.15.1-py3-none-any.whl
| Download URL | skpro-2.15.1-py3-none-any.whl |
|---|---|
| Size | 568.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
928240ae8d10c39fb539c692fa79d4ca20136344b1185b1fe0c4d02e78c2db75
|
|
BLAKE2b-256 checksum How to use checksums |
7c1412e3392860af3589896c48261664ec04870293f4897752ed43c01854bf20
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency log