Skip to main content

A unified framework for probability distributions and probabilistic supervised regression

Project description

NOTE: for historical reasons, version numbers of maturing versions start at 2.0.0.

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
  • metrics to evaluate probabilistic predictions, e.g., pinball loss, empirical coverage, CRPS
  • reductions to turn scikit-learn regressors into probabilistic skpro regressors, 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 and pandas-like interface
Overview
Open Source BSD 3-clause
Tutorials Binder !youtube
Community !discord !slack
CI/CD github-actions !codecov readthedocs platform
Code !pypi !conda !python-versions !black

: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 3 pm UTC, dev/meet-ups channel

: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, _ = 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 sktime's community.

:wave: Citation

To cite skpro in a scientific publication, see citations.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skpro-2.0.1.tar.gz (138.1 kB view details)

Uploaded Source

Built Distribution

skpro-2.0.1-py3-none-any.whl (181.0 kB view details)

Uploaded Python 3

File details

Details for the file skpro-2.0.1.tar.gz.

File metadata

  • Download URL: skpro-2.0.1.tar.gz
  • Upload date:
  • Size: 138.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for skpro-2.0.1.tar.gz
Algorithm Hash digest
SHA256 55bab2ac57b26f750f38b6055eca7b2d6870499aa29ec37c84d6e5ef8b215cd9
MD5 a65e575761c815fdd5682ab7782a47ac
BLAKE2b-256 7a70891e2a9699ad65c3f622bbaa44adc22bb0a2b1f5d91bc54e40e11560356f

See more details on using hashes here.

File details

Details for the file skpro-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: skpro-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 181.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for skpro-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6beabcc3ef919444b0ffd925a869342667d6aafa9dd56db67e4d854191e93f30
MD5 abbab75364e1ed4b8386ba33c5dbc70e
BLAKE2b-256 9c39938e36e8ffda5987b8bd32d5e6550f21c0aab3d6c34e3a42ac42e82d0acf

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page