History
August 12, 2026 · View on GitHub
1.x.x (2026-xx-xx)
- Add educational MAPIE notebooks covering regression and conformal prediction for language models. Shown in the documentation homepage and All Examples.
- Fix
_compute_classification_quantileto select the intended split-conformal order statistic. For some calibration sizes and confidence levels, the previous computation selected the next higher order statistic, making prediction sets unnecessarily conservative. Classification and regression now apply the same finite-sample correction. (issue #479)
1.5.0 (2026-xx-xx)
Features
- Add
ConditionalSplitConformalRegressorandConditionalSplitConformalClassifier, implementing conformal prediction with conditional guarantees following Gibbs et al. (2023). Only in the case of finite-dimensional classes for now. - Add
CrossConformalizedQuantileRegressorfor cross-conformalized quantile regression, with dedicated conformity scores and examples. - Add PyTorch-based
ConditionalExpectedRiskControllerfor Automatically Adaptive Conformal Risk Control (AA-CRC), together with built-in recall and symmetric-interval miscoverage losses and support for customRiskLossinstances. - Add
StdConformityScorefor estimators that expose prediction standard deviations throughpredict(..., return_std=True), enabling methods such as J+GP. - Add multivariate standardized residual conformity scores (in mapie.experimental for now).
- Add
aucroc_scoreandauarc_scorefor uncertainty evaluation following Lin et al. (2023). (issue #551) - Add the
classwiseoption toexpected_calibration_errorfor classwise ECE. (issue #277) - Add conditional coverage diagnostics: WSC (
worst_slab_coverage), ERT (excess_risk_target_coverage), and optionalcovmetricsintegration for CovGap and WCovGap.
Improvements and refactoring
- Consolidate regression and classification quantile computation in shared
utilities, replacing the former
get_quantilemethod and_compute_quantileswrapper. No public API changes. (issue #479)
Bug fixes
- Reduce memory usage while generating the example gallery on Read the Docs.
Documentation
- Big update to the documentation: now based on MkDocs, still hosted on Read the Docs. The legacy Sphinx tree and obsolete static-site deployment files have been removed.
- Add a dedicated conditional conformal prediction gallery, including Gibbs et al. (2023) simulations and a Communities and Crime example backed by a local copy of the dataset.
- Add scientific examples for J+GP and AA-CRC, plus an exchangeability-testing benchmark notebook.
- Update the time-series change-point notebook for the quantile refactoring.
- Generate the API reference and navigation automatically from MAPIE's public objects.
- Consolidate the conformal-prediction metrics documentation and expand the theory for conditional coverage diagnostics.
- Reorganize the documentation around high-level introductions, shared
conformal-prediction foundations, refreshed v1 getting-started workflows, and
one
doc/content/content folder per main section. - Add “Other Notebooks” sections to the classification and regression galleries and make assorted wording, notation, navigation, and example refinements.
CI, release, and developer experience
- Upgrade JupyterLab, PyTorch, pytest, and other development dependencies to address security vulnerabilities.
- Add SonarQube and Bandit analysis and update GitHub Actions to supported Node runtimes.
- Simplify release automation by removing the job that rewrote
CITATION.cff. - Refresh the release checklist with GitHub release guidance.
- Add
AGENTS.mdas the canonical guide for coding agents.
Breaking changes
- Drop support for Python 3.9 (EOL since October 2025). Minimum supported version is now Python 3.10. This was required to upgrade
pytestto 9.0.3, which fixes a security advisory (CVE on/tmp/pytest-of-{user}directory handling).
1.4.1 (2026-06-08)
Features
- Add
conformity_scoresattribute to all Mapie objects, exposing conformity scores through a public property. (issue #921) - Add
reset()method onCrossConformalRegressorand allow refitting viafit_conformalize(now emits aUserWarningand discards prior conformity scores instead of raising). Same pattern can be propagated to other conformal classes in follow-up PRs. (issue #710) - Add
reset()method onJackknifeAfterBootstrapRegressorand allow refitting viafit_conformalize(mirrors the pattern landed forCrossConformalRegressorin #931). - Add
reset()method onCrossConformalClassifierand allow refitting viafit_conformalize(mirrors the pattern landed in #931 and #936); completes the warn-on-refit pattern across all Cross/Jackknife conformal techniques.
Improvements and refactoring
- Relax the monotonicity check in the
fixed_sequenceFWER procedure: a non-monotonic risk now emits aUserWarning(suggestingsplit_fixed_sequence) and infers a direction, instead of raising aValueError. (issue #942) - Add validation that a custom
BinaryRiskreturns per-sample occurrence values that are binary indicators (booleans, or values equal to 0 or 1); aValueErroris now raised otherwise, as the binary Hoeffding-Bentkus guarantees require it. - Add validation to reject
SubsampleascvinCrossConformalRegressor, directing users toJackknifeAfterBootstrapRegressorinstead. (issue #924) - Add defensive validation:
_MapieRegressorand_MapieClassifiernow raiseTypeErrorwhensample_weightis passed as a top-level keyword argument instead of insidefit_params. Previously, top-levelsample_weightwas silently ignored. Also fixTimeSeriesRegressortests that were affected by the same silent-ignore bug. - Add notebook kernel restart warning for Kaggle/Jupyter/Colab users after installation or version changes. (issue #916)
- Simplify internal
sample_weighthandling in classification module:sample_weightnow flows throughfit_paramsinstead of being passed as a separate argument through the call chain. No public API changes. (issue #753) - Simplify internal
sample_weighthandling in quantile regression module:sample_weightnow flows throughfit_paramsinstead of being passed as a separate argument through the call chain. No public API changes. (issue #753) - Remove
_prepare_fit_params_and_sample_weightutility (no longer needed after regression, classification, and quantile regression refactors). (issue #753)
Bug fixes
- Fix
BinaryClassificationControllerso the selected best threshold is optimal: when several parameters reach the minimum secondary risk, ties are now broken in favor of the least conservative threshold. (issue #942) - Fix
optimize_betain regression conformity scores so prediction interval width minimization actually optimizes β (was previously a no-op due to a shape-collapsing reshape); also resolves incorrect prediction interval shape when used with multiple confidence levels. (issues #588, #484) - Propagate
random_stateto the internalSubsampleinJackknifeAfterBootstrapRegressorso bootstrap resampling is reproducible and no longer depends on the global NumPy RNG state. (issue #940) - Restore backward compatibility for the predict-argument renames introduced in #919:
CrossConformalRegressor'saggregate_predictionsandJackknifeAfterBootstrapRegressor'sensemble(inpredictandpredict_interval) keep working as deprecated aliases foraggregate_point_predictions, now emitting aFutureWarninginstead of raising aTypeError. (issue #906)
Documentation
- Add a risk control advanced-analysis example showing how to define and control a custom risk (specificity) with
BinaryRiskand theBinaryClassificationController. - Add a repository backup of the BlogFeedback dataset (
examples/data/blogData_train.csv.gz) used by the Kim et al. (2020) example, now loaded by default so the example no longer depends on the UCI download server. - Add repository backups of the Zaffran et al. (2022) data used by the ACI comparison example — the prices dataset (
examples/data/zaffran2022_prices.csv.gz) and the reference results (examples/data/zaffran2022_aci_reference.csv) — now loaded by default so the example no longer depends on external downloads (also fixes anUnboundLocalErrorthat surfaced when the reference download failed). - Fix the documentation site navigation dropdown and even out the vertical spacing between sidebar nav entries.
CI, release, and developer experience
- Fix the release process (release-candidate/final-release workflows, docs deployment, and release checklist).
- Make tests compatible with scikit-learn 1.9 (calibration tests).
- Silence intentional
UserWarnings emitted during test runs to keep the test output clean.
1.4.0 (2026-04-30)
Features
- Add several methods for family-wise error rate (FWER) control.
- Add exchangeability testing with permutation tests and online martingale tests, plus a high-level exchangeability API.
- Add risk monitoring.
- Add experimental module.
- Expose
p0_p1_outputinVennAbersCalibrator.predict_proba.
Improvements and refactoring
- Change the default FWER control method for risk control from
bonferronitobonferroni_holm. - Rename
BinaryClassificationRisktoBinaryRiskand keep a deprecated alias for backward compatibility. - Extended risks to
ContinuousRiskfor more general risk monitoring. - Simplify internal
sample_weighthandling in regression module:sample_weightnow flows throughfit_paramsinstead of being passed as a separate argument through the call chain. No public API changes. (issue #753) - Refactor offline tests and simplify parts of regression internals (including
sample_weighthandling and moving_check_gammatotime_series_regression.py).
Bug fixes
- Fix
sample_weightrouting through scikit-learnPipelinein_fit_estimator. - Remove sphinx thumbnail from LAC-APS example.
Documentation
- Move documentation to GitHub Pages/MkDocs and modernize the docs stack (Material setup, content pages, API auto-generation, markdown gallery conversion, multiline API signatures, and versioning).
- Improve MkDocs navigation, layout, examples overview, and documentation page rendering.
- Add richer exchangeability documentation, including theoretical background and in-depth examples for online martingale testing.
- Improve docs site content and UX (homepage examples, contributor guide, logo/banner fixes, image path fixes, and stable-doc image rendering fixes).
CI, release, and developer experience
- Modernize CI and documentation workflows (MkDocs deployment, RTD transition support, docs build fixes, faster docs build, and workflow path/version pin updates).
- Add optional pre-commit hook (format, lint, type-check) via pre-commit; documented in CONTRIBUTING.
- Improve project tooling and contributor experience (mypy return-any warnings, refreshed CONTRIBUTING and release checklist, and new project badges).
- Simplify release checklist: migrate the release flow to
setuptools-scm, smoke tests in the workflows, use release candidates for TestPypi.
1.3.0 (2026-02-02)
- Introduce the Venn-Abers calibrator for both binary and multiclass classification.
- Implement a new risk control class for multi-label classification:
MultiLabelClassificationController, a new variant ofPrecisionRecallController. - Add risk control for Semantic Segmentation with a new
SemanticSegmentationControllerinheriting fromMultiLabelClassificationController. - Add a new binary classification risk called
predicted_positive_fractionand update the corresponding examples. - Configure a self-hosted runner for minimal requirements tests.
- Add two Semantic Segmentation examples illustrating precision and recall control on satellite roof images.
- Add an example of risk control using an LLM as a judge with abstention.
- Add a comparison with naive thresholding in the risk control quick start example.
- Add risk control to the decision tree in the “choosing the right algorithm” documentation section.
- Improve documentation display: increase content width, simplify example titles, improve API tables, and refine the decision tree for algorithm selection.
- Choose better thumbnails for the example lists in the documentation.
- Fix duplicated titles in the documentation tree.
- Add previous versions to the documentation version selector.
- Fix data leakage issues in time series tutorials.
- HISTORY, CONTRIBUTING, and AUTHORS are now written in Markdown instead of reStructuredText.
- Remove the dependency of internal classes on
sklearn’scheck_is_fitted. - Fix a bug in CRC and RCPS where the computed lambda was not optimal.
- Fix a bug in the
updatemethod of ACI for time series. - Add a disclosure about LLM usage to the pull request template.
- Improve the contribution guide by simplifying the Python setup and adding instructions for new contributors.
- Created a HuggingFace repository for MAPIE: https://huggingface.co/datasets/mapie-library
1.2.0 (2025-11-17)
- Implement extension of binary risk control to multi-risk
- Implement extension of binary risk control to multi-dimensional parameters
- Reorganise code structure for risk control
- BinaryClassificationController allows BinaryClassificationRisk and string representations of risks
- Improve quick start documentation for risk control
- Add new tutorial for risk control with multiple risks
- Add new tutorial for risk control with multi-dimensional parameters
- Fix issue 614 to pass Predict Params to RAPS for conformity score calculation and EnsembleClassifier
- Fix issue 790 to make
BlockBootstrapinclude all non-training indices in the test set - Update Python environment: dependancies are now in pyproject.toml
- Update CI and add long_tests folder for tests requiring more time
1.1.0 (2025-09-22)
- Implement new binary risk control feature, see BinaryClassificationController and BinaryClassificationRisk
- See also the reworked risk control documentation
- Revert incorrect renaming of calibration to conformalization in PrecisionRecallController
- Fix warnings when running tests
- Add scientific references for regression conformity scores
- Fix double inference when using
predict_setfunction in split conformal classification - MAPIE now supports Python versions up to the latest release (currently 3.13)
- Change
prefitdefault value toTruein split methods' docstrings to remain consistent with the implementation - Fix issue 699 to replace
TimeSeriesRegressor.partial_fitwithTimeSeriesRegressor.update
1.0.1 (2025-05-22)
- Patch following v1.0.0 release: removing dependence to typing_extensions, making MAPIE unusable if this package is not installed
1.0.0 (2025-05-22)
- Major update, including a complete classification and regression public API rework, and a documentation revamp
- Other parts of the public API have been improved as well
- See the v1_release_notes.rst documentation file for extensive and user-focused release notes
- This update also includes bugfixes and developer experience improvements
0.9.2 (2025-01-15)
- Fix issue 525 in contribution guidelines with syntax errors in hyperlinks and other formatting issues.
- Fix issue 495 to center correctly the prediction intervals
- Fix issue 528 to correct broken ENS image in the documentation
- Fix issue 548 to correct labels generated in tutorial
- Fix issue 547 to fix wrong warning
- Fix issue 480 (correct display of mathematical equations in generated notebooks)
- Temporary solution waiting for issue 588 to be fixed (optimize_beta not working)
- Remove several irrelevant user warnings
- Limit max sklearn version allowed at MAPIE installation
- Refactor MapieRegressor, EnsembleRegressor, and MapieQuantileRegressor, to prepare for the release of v1.0.0
- Documentation build: fix warnings, fix image generation, update sklearn version requirement
- Documentation test: add a doc testing step (in MAKEFILE and CI)
- Increase max line length from 79 to 88 characters
- Bump wheel version
- Other minor evolutions
0.9.1 (2024-09-13)
- Fix issue 511 to access non-conformity scores with previous path
- Update gitignore by including the documentation folder generated for Mondrian
- Fix (partially) the set-up with pip instead of conda for new contributors
0.9.0 (2024-09-03)
- Fix citations and license links
- Fix the CQR tutorial to have same data in both methods
- Add
** predict_paramsin fit and predict method for Mapie Classifier - Add Mondrian Conformal Prediction for regression and classification
- Add
** predict_paramsin fit and predict method for Mapie Regression - Update the ts-changepoint notebook with the tutorial
- Change import related to conformity scores into ts-changepoint notebook
- Replace
assert np.array_equalbynp.testing.assert_array_equalin Mapie unit tests - Replace
github.com/simai-ml/MAPIEbygithub.com/scikit-learn-contrib/MAPIEin all Mapie files - Extend
ConformityScoreto support regression (withBaseRegressionScore) and to support classification (withBaseClassificationScore) - Extend
EnsembleEstimatorto support regression (withEnsembleRegressor) and to support classification (withEnsembleClassifier) - Refactor
MapieClassifierby separating the handling of theMapieClassifierestimator into a new class calledEnsembleClassifier - Refactor
MapieClassifierby separating the handling of theMapieClassifierconformity score into a new class calledBaseClassificationScore - Add severals non-conformity scores for classification (
LAC,APS,RAPS,TopK) based onBaseClassificationScore - Transfer the logic of classification methods into the non-conformity score classes (
LAC,APS,RAPS,TopK) - Extend the classification strategy definition by supporting
methodandconformity_scoreattributes - Building unit tests for different
SubsampleandBlockBooststrapinstances - Change the sign of C_k in the
Kolmogorov-Smirnovtest documentation - Building a training set with a fraction between 0 and 1 with
n_samplesattribute when usingsplitmethod fromSubsampleclass.
0.8.6 (2024-06-14)
- Fix the quantile formula to ensure valid coverage (deal with infinite interval production and asymmetric conformal scores).
- Fix sphinx dependencies
0.8.5 (2024-06-07)
- Issue with update from 0.8.4
0.8.4 (2024-06-07)
- Fix the quantile formula to ensure valid coverage for any number of calibration data in
ConformityScore. - Fix overloading of the value of the
methodattribute when usingMapieRegressorandMapieTimeSeriesRegressor. - Fix conda versionning.
- Reduce precision for test in
MapieCalibrator. - Fix invalid certificate when downloading data.
- Add citations utility to the documentation.
- Add documentation for metrics.
- Add explanation and example for symmetry argument in CQR.
0.8.3 (2024-03-01)
- Allow the use of
yandgroupsarguments MapieRegressor and MapieClassifier. - Add possibility of passing fit parameters used by estimators.
- Fix memory issue CQR when testing for upper and lower bounds.
- Add Winkler Interval Score.
0.8.2 (2024-01-11)
- Resolve issue still present in 0.8.1 by updating pandas.
0.8.1 (2024-01-11)
- First attemps at fixing library conda issue.
0.8.0 (2024-01-03)
- Add Adaptative Conformal Inference (ACI) method for MapieTimeSeriesRegressor.
- Add Coverage Width-based Criterion (CWC) metric.
- Allow to use more split methods for MapieRegressor (ShuffleSplit, PredefinedSplit).
- Allow infinite prediction intervals to be produced in regressor classes.
- Integrate ConformityScore into MapieTimeSeriesRegressor.
- Add (extend) the optimal estimation strategy for the bounds of the prediction intervals for regression via ConformityScore.
- Add new checks for metrics calculations.
- Fix reference for residual normalised score in documentation.
0.7.0 (2023-09-14)
- Add prediction set estimation for binary classification.
- Add Learn-Then-Test method for multilabel-classification.
- Add documentation and notebooks for LTT.
- Add a new conformity score, ResidualNormalisedScore, that takes X into account and allows to compute adaptive intervals.
- Refactor MapieRegressor and ConformityScore to add the possibility to use X in ConformityScore.
- Separate the handling of the estimator from MapieRegressor into a new class called EnsembleEstimator.
- Rename methods (score to lac and cumulated_score to aps) in MapieClassifier.
- Add more notebooks and examples.
- Fix an unfixed random state in one of the classification tests.
- Add statistical calibration tests in binary classification.
- Fix and preserve the split behavior of the check_cv method with and without random state.
0.6.5 (2023-06-06)
- Add grouped conditional coverage metrics named SSC for regression and classification
- Add HSIC metric for regression
- Migrate conformity scores classes into conformity_scores module
- Migrate regression classes into regression module
- Add split conformal option for regression and classification
- Update check method for calibration
- Fix bug in MapieClassifier with different number of labels in calibration dataset.
0.6.4 (2023-04-05)
- Fix runtime warning with RAPS method
0.6.3 (2023-03-23)
- Fix bug when labels do not start at 0
0.6.2 (2023-03-22)
- Make MapieClassifier a scikit-learn object
- Update documentation for MapieClassifier
0.6.1 (2023-01-31)
- Fix still existing bug for classification with very low scores
0.6.0 (2023-01-19)
- Add RCPS and CRC for multilabel-classification
- Add Top-Label calibration
- Fix bug for classification with very low scores
0.5.0 (2022-10-20)
- Add RAPS method for classification
- Add theoretical description for RAPS
0.4.2 (2022-09-02)
- Add tutorial for time series
- Convert existing tutorials in .py
- Add prefit method for CQR
- Add tutorial for CQR
0.4.1 (2022-06-27)
- Add
packaginglibrary in requirements - Fix displaying problem in pypi
0.4.0 (2022-06-24)
- Relax and fix typing
- Add Split Conformal Quantile Regression
- Add EnbPI method for Time Series Regression
- Add EnbPI Documentation
- Add example with heteroscedastic data
- Add
ConformityScoreclass that allows the user to define custom conformity scores
0.3.2 (2022-03-11)
- Refactorize unit tests
- Add "naive" and "top-k" methods in MapieClassifier
- Include J+aB method in regression tutorial
- Add MNIST example for classification
- Add cross-conformal for classification
- Add
notebooksfolder containing notebooks used for generating documentation tutorials - Uniformize the use of matrix k_ and add an argument "ensemble" to method "predict" in regression.py
- Add replication of the Chen Xu's tutorial testing Jackknife+aB vs Jackknife+
- Add Jackknife+-after-Bootstrap documentation
- Improve scikit-learn pipelines compatibility
0.3.1 (2021-11-19)
- Add Jackknife+-after-Bootstrap method and add mean and median as aggregation functions
- Add "cumulative_score" method in MapieClassifier
- Allow image as input in MapieClassifier
0.3.0 (2021-09-10)
- Renaming estimators.py module to regression.py
- New classification.py module with MapieClassifier class, that estimates prediction sets from softmax score
- New set of unit tests for classification.py module
- Modification of the documentation architecture
- Split example gallery into separate regression and classification galleries
- Add first classification examples
- Add method classification_coverage_score in the module metrics.py
- Fixed code error for plotting of interval widths in tutorial of documentation
- Added missing import statements in tutorial of documentation
- Refactorize tests of
n_jobsandverboseinutils.py
0.2.3 (2021-07-09)
- Inclusion in conda-forge with updated release checklist
- Add time series example
- Add epistemic uncertainty example
- Remove CicleCI redundancy with ReadTheDocs
- Remove Pep8speaks
- Include linting in CI/CD
- Use PyPa github actions for releases
0.2.2 (2021-06-10)
- Set alpha parameter as predict argument, with None as default value
- Switch to github actions for continuous integration of the code
- Add image explaining MAPIE internals on the README
0.2.1 (2021-06-04)
- Add
cv="prefit"option - Add sample_weight argument in fit method
0.2.0 (2021-05-21)
- Add n_jobs argument using joblib parallel processing
- Allow
cvto take the value -1 equivalently toLeaveOneOut() - Introduce the
cvparameter to get closer to scikit-learn API - Remove the
n_splits,shuffleandrandom_stateparameters - Simplify the
methodparameter - Fix typos in documentation and add methods descriptions in sphinx
- Accept alpha parameter as a list or np.ndarray. If alpha is an Iterable,
.predict()returns a np.ndarray of shape (n_samples, 3, len(alpha)).
0.1.4 (2021-05-07)
- Move all alpha related operations to predict
- Assume default LinearRegression if estimator is None
- Improve documentation
return_predargument is nowensembleboolean
0.1.3 (2021-04-30)
- Update PyPi homepage
- Set up publication workflows as a github action
- Update issue and pull request templates
- Increase sklearn compatibility (coverage_score and unit tests)
0.1.2 (2021-04-27)
- First release on PyPi
0.1.1 (2021-04-27)
- First release on TestPyPi
0.1.0 (2021-04-27)
- Implement metrics.coverage
- Implement estimators.MapieRegressor