Skip to main content
Puncc


Puncc (short for Predictive uncertainty calibration and conformalization) is an open-source Python library. It seamlessly integrates a collection of state-of-the-art conformal prediction algorithms and associated techniques for diverse machine learning tasks, including regression, classification, object detection and anomaly detection. Puncc can be used with any predictive model to provide rigorous uncertainty estimations. Under data exchangeability (or i.i.d), the generated prediction sets are guaranteed to cover the true outputs within a user-defined error $\alpha$.

Documentation is available online.

📚 Table of contents

🐾 Installation

puncc requires a version of python higher than 3.9 and several libraries including Scikit-learn. It is recommended to install puncc in a virtual environment to not mess with your system's dependencies.

You can directly install the library using pip:

pip install -U puncc

The package is also available on conda-forge:

conda install -c conda-forge puncc

📖 Documentation

For comprehensive documentation, we encourage you to visit the official documentation page. For a hands-on walkthrough of building new conformal methods with custom nonconformity scores, prediction sets, calibrators and splitters, see the Custom Conformal Methods tutorial.

👨‍🎓 Tutorials

We highly recommend following the introductory tutorials to get familiar with the library and its API.

Tutorial Description Link
Introduction Tutorial Get started with the basics of puncc. Open In Github Open In Colab
API Tutorial Learn about puncc's API. Open In Github Open In Colab
Tutorial on CP with PyTorch Learn how to use puncc with PyTorch. Open In Github Open In Colab
Tutorial on CP with TensorFlow Learn how to use puncc with TensorFlow / Keras. Open In Github Open In Colab
Adaptive Conformal Regression Learn how conformalize regression models to obtain adaptive prediction intervals using methods such as LACP, LWCP and CQR. Open In Github Open In Colab
Conformal Object Detection Learn to conformalize an object detector. Open In Github Open In Colab
Conformal Text Classification Learn to conformalize pretrained HuggingFace NLP model. Open In Github Open In Colab
Conformal Classwise Classification Learn how to conformalize classification models for class-conditional coverage. Open In Github Open In Colab
Conformal Time Series Forecasting Learn to conformalize time series models. Open In Github Open In Colab
Custom Conformal Workflow Build new conformal predictors with custom nonconformity scores, prediction sets and conformalization logic. Open In Github Open In Colab
Architecture Overview Detailed overview of puncc's architecture. Open In Github Open In Colab

🚀 Quickstart

Conformal prediction enables to transform point predictions into interval predictions with high probability of coverage. The figure below shows the result of applying the split conformal algorithm on a linear regressor.

Many conformal prediction algorithms can easily be applied using puncc. The code snippet below shows the example of split conformal prediction with a pretrained linear model:

from deel.puncc.api.prediction import BasePredictor
from deel.puncc.regression import SplitCP

# Load calibration and test data
# ...

# Pretrained regression model
# trained_linear_model = ...

# Wrap the model to enable interoperability with different ML libraries
trained_predictor =  BasePredictor(trained_linear_model)

# Instanciate the split conformal wrapper for the linear model.
# Train argument is set to False because we do not want to retrain the model
split_cp = SplitCP(trained_predictor, train=False)

# With a calibration dataset, compute (and store) nonconformity scores
split_cp.fit(X_calib=X_calib, y_calib=y_calib)

# Obtain the model's point prediction y_pred and prediction interval
# PI = [y_pred_lower, y_pred_upper] for a target coverage of 90% (1-alpha).
y_pred, y_pred_lower, y_pred_upper = split_cp.predict(X_test, alpha=0.1)

The library provides several metrics (deel.puncc.metrics) and plotting capabilities (deel.puncc.plotting) to evaluate and visualize the results of a conformal procedure. For a target error rate of $\alpha = 0.1$, the marginal coverage reached in this example on the test set is higher than $90$% (see Introduction tutorial):

90% Prediction Interval with the Split Conformal Prediction Method
90% Prediction Interval with Split Conformal Prediction.

More flexibility with the API

Puncc provides two ways of defining and using conformal prediction wrappers:

  • A direct approach to run state-of-the-art conformal prediction procedures. This is what we used in the previous conformal regression example.
  • Low-level API: a more flexible approach based of full customization of the prediction model, the choice of nonconformity scores and the split between fit and calibration datasets.

A quick comparison of both approaches is provided in the API tutorial for a regression problem.

🖥️ Implemented Algorithms

Overview of Implemented Methods from the Literature:
Procedure Type Procedure Name Description (more details in Theory overview)
Conformal Regression deel.puncc.regression.SplitCP Split Conformal Regression
Conformal Regression deel.puncc.regression.LocallyAdaptiveCP Locally Adaptive Conformal Regression
Conformal Regression deel.puncc.regression.LeverageWeightedCP Leverage-Weighted Conformal Prediction
Conformal Regression deel.puncc.regression.CQR Conformalized Quantile Regression
Conformal Regression deel.puncc.regression.CvPlus CV + (cross-validation)
Conformal Regression deel.puncc.regression.EnbPI Ensemble Batch Prediction Intervals method
Conformal Regression deel.puncc.regression.aEnbPI Locally adaptive Ensemble Batch Prediction Intervals method
Conformal Classification deel.puncc.classification.LAC Least Ambiguous Set-Valued Classifiers
Conformal Classification deel.puncc.classification.ClasswiseLAC Classwise Conformal Classification
Conformal Classification deel.puncc.classification.APS Adaptive Prediction Sets
Conformal Classification deel.puncc.classification.RAPS Regularized Adaptive Prediction Sets (APS is a special case where $\lambda = 0$)
Conformal Anomaly Detection deel.puncc.anomaly_detection.SplitCAD Split Conformal Anomaly detection (used to control the maximum false positive rate)
Conformal Object Detection deel.puncc.object_detection.SplitBoxWise Box-wise split conformal object detection

📚 Citation

If you use our library for your work, please cite our paper:

@inproceedings{mendil2023puncc,
  title={PUNCC: a Python Library for Predictive Uncertainty Calibration and Conformalization},
  author={Mendil, Mouhcine and Mossina, Luca and Vigouroux, David},
  booktitle={Conformal and Probabilistic Prediction with Applications},
  pages={582--601},
  year={2023},
  organization={PMLR}
}

Puncc has been used to support the work presented in our COPA 2022 paper on conformal prediction for time series.

@inproceedings{mendil2022robust,
  title={Robust Gas Demand Forecasting With Conformal Prediction},
  author={Mendil, Mouhcine and Mossina, Luca and Nabhan, Marc and Pasini, Kevin},
  booktitle={Conformal and Probabilistic Prediction with Applications},
  pages={169--187},
  year={2022},
  organization={PMLR}
}

🙏 Acknowledgments

This project received funding from the French ”Investing for the Future – PIA3” program within the Artificial and Natural Intelligence Toulouse Institute (ANITI). The authors gratefully acknowledge the support of the DEEL project.

👨‍💻 About the Developers

Puncc's development team is a group of passionate scientists and engineers who are committed to developing a dependable and user-friendly open-source software. We are always looking for new contributors to this initiative. If you are interested in helping us develop puncc, please feel free to get involved.

💻 Contributing

Contributions are welcome! Feel free to report an issue or open a pull request. Take a look at our guidelines here.

🔑 License

The package is released under MIT license.

Metadata

Release files for puncc 0.9.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for puncc 0.9.3
File Size Uploaded
puncc-0.9.3.tar.gz 68.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for puncc 0.9.3
File Interpreter ABI Platform
puncc-0.9.3-py3-none-any.whl Python 3 none any Details

Total release size: 152.2 kB

Release files / puncc-0.9.3.tar.gz

Download URL puncc-0.9.3.tar.gz
Size 68.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8652e316a793cfe5e713ba99f56e350fd67adf47721f0f29e77bf9c888601ec1
BLAKE2b-256 checksum
How to use checksums
9870296bb727cb130fb871140f613d95d259b189def730a8e59cd7659e2e2cc3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.18

Release files / puncc-0.9.3-py3-none-any.whl

Download URL puncc-0.9.3-py3-none-any.whl
Size 83.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
26a177ce45fe9f7ade6938288b01ad1fc7a8d6df773560fb01bfdbdfbadd96de
BLAKE2b-256 checksum
How to use checksums
fcd17462bbf4eb059397902b8d620a0c324ca7d8228b39cb0747e0e28e76c425
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.18

Release history Release notifications | RSS feed

This release

0.9.3 This release

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.8.0

2 release files

0.7.8

2 release files

0.7.7

2 release files

0.7.6

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page