Skip to content

Commit 621e2ee

Browse files
committed
Merge master
2 parents 8f10703 + 8583e6b commit 621e2ee

36 files changed

+3421
-1531
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ Please describe the tests that you ran to verify your changes. Provide instructi
2222

2323
# Checklist
2424

25-
- [ ] I have read the [contributing guidelines](https://github.com/simai-ml/MAPIE/blob/master/CONTRIBUTING.rst)
26-
- [ ] I have updated the [HISTORY.rst](https://github.com/simai-ml/MAPIE/blob/master/HISTORY.rst) and [AUTHORS.rst](https://github.com/simai-ml/MAPIE/blob/master/AUTHORS.rst) files
25+
- [ ] I have read the [contributing guidelines](https://github.com/scikit-learn-contrib/MAPIE/blob/master/CONTRIBUTING.rst)
26+
- [ ] I have updated the [HISTORY.rst](https://github.com/scikit-learn-contrib/MAPIE/blob/master/HISTORY.rst) and [AUTHORS.rst](https://github.com/scikit-learn-contrib/MAPIE/blob/master/AUTHORS.rst) files
2727
- [ ] Linting passes successfully : `make lint`
2828
- [ ] Typing passes successfully : `make type-check`
2929
- [ ] Unit tests pass successfully : `make tests`

CONTRIBUTING.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ What to work on?
66
----------------
77

88
You are welcome to propose and contribute new ideas.
9-
We encourage you to `open an issue <https://github.com/simai-ml/MAPIE/issues>`_ so that we can align on the work to be done.
9+
We encourage you to `open an issue <https://github.com/scikit-learn-contrib/MAPIE/issues>`so that we can align on the work to be done.
1010
It is generally a good idea to have a quick discussion before opening a pull request that is potentially out-of-scope.
1111

1212
Fork/clone/pull
1313
---------------
1414

1515
The typical workflow for contributing to `mapie` is:
1616

17-
1. Fork the `master` branch from the `GitHub repository <https://github.com/simai-ml/MAPIE>`_.
17+
1. Fork the `master` branch from the `GitHub repository <https://github.com/scikit-learn-contrib/MAPIE>`_.
1818
2. Clone your fork locally.
1919
3. Commit changes.
2020
4. Push the changes to your fork.
@@ -64,8 +64,8 @@ Updating changelog
6464

6565
You can make your contribution visible by :
6666

67-
1. adding your name to the Contributors sections of `AUTHORS.rst <https://github.com/simai-ml/MAPIE/blob/master/AUTHORS.rst>`_
68-
2. adding a line describing your change into `HISTORY.rst <https://github.com/simai-ml/MAPIE/blob/master/HISTORY.rst>`_
67+
1. adding your name to the Contributors sections of `AUTHORS.rst <https://github.com/scikit-learn-contrib/MAPIE/blob/master/AUTHORS.rst>`_
68+
2. adding a line describing your change into `HISTORY.rst <https://github.com/scikit-learn-contrib/MAPIE/blob/master/HISTORY.rst>`_
6969

7070
Testing
7171
-------

HISTORY.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ History
55
0.8.x (2024-xx-xx)
66
------------------
77

8+
* Replace `assert np.array_equal` by `np.testing.assert_array_equal` in Mapie unit tests
9+
* Replace `github.com/simai-ml/MAPIE` by `github.com/scikit-learn-contrib/MAPIE`in all Mapie files
10+
* Extend `ConformityScore` to support regression (with `BaseRegressionScore`) and to support classification (with `BaseClassificationScore`)
11+
* Extend `EnsembleEstimator` to support regression (with `EnsembleRegressor`) and to support classification (with `EnsembleClassifier`)
12+
* Refactor `MapieClassifier` by separating the handling of the `MapieClassifier` estimator into a new class called `EnsembleClassifier`
13+
* Refactor `MapieClassifier` by separating the handling of the `MapieClassifier` conformity score into a new class called `BaseClassificationScore`
14+
* Add severals non-conformity scores for classification (`LAC`, `APS`, `RAPS`, `TopK`) based on `BaseClassificationScore`
15+
* Transfer the logic of classification methods into the non-conformity score classes (`LAC`, `APS`, `RAPS`, `TopK`)
16+
* Extend the classification strategy definition by supporting `method` and `conformity_score` attributes
817
* Building unit tests for different `Subsample` and `BlockBooststrap` instances
918
* Change the sign of C_k in the `Kolmogorov-Smirnov` test documentation
1019
* Building a training set with a fraction between 0 and 1 with `n_samples` attribute when using `split` method from `Subsample` class.

doc/api.rst

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,17 +73,32 @@ Metrics
7373
metrics.spiegelhalter_statistic
7474
metrics.top_label_ece
7575

76-
Conformity scores
77-
=================
76+
Conformity scores (regression)
77+
==============================
7878

7979
.. autosummary::
8080
:toctree: generated/
8181
:template: class.rst
8282

83+
conformity_scores.BaseRegressionScore
8384
conformity_scores.AbsoluteConformityScore
8485
conformity_scores.GammaConformityScore
8586
conformity_scores.ResidualNormalisedScore
8687

88+
Conformity scores (classification)
89+
==================================
90+
91+
.. autosummary::
92+
:toctree: generated/
93+
:template: class.rst
94+
95+
conformity_scores.BaseClassificationScore
96+
conformity_scores.NaiveConformityScore
97+
conformity_scores.LACConformityScore
98+
conformity_scores.APSConformityScore
99+
conformity_scores.RAPSConformityScore
100+
conformity_scores.TopKConformityScore
101+
87102
Resampling
88103
==========
89104

examples/classification/1-quickstart/plot_comp_methods_on_2d_dataset.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ def plot_scores(
170170
for i, method in enumerate(methods):
171171
conformity_scores = mapie[method].conformity_scores_
172172
n = mapie[method].n_samples_
173-
quantiles = mapie[method].quantiles_
173+
quantiles = mapie[method].conformity_score_function_.quantiles_
174174
plot_scores(alpha, conformity_scores, quantiles, method, axs[i])
175175
plt.show()
176176

@@ -270,7 +270,8 @@ def plot_results(
270270
axs[0].set_xlabel("1 - alpha")
271271
axs[0].set_ylabel("Quantile")
272272
for method in methods:
273-
axs[0].scatter(1 - alpha_, mapie[method].quantiles_, label=method)
273+
quantiles = mapie[method].conformity_score_function_.quantiles_
274+
axs[0].scatter(1 - alpha_, quantiles, label=method)
274275
axs[0].legend()
275276
for method in methods:
276277
axs[1].scatter(1 - alpha_, coverage[method], label=method)

examples/classification/4-tutorials/plot_crossconformal.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,11 @@
134134

135135
fig, axs = plt.subplots(1, len(mapies["lac"]), figsize=(20, 4))
136136
for i, (key, mapie) in enumerate(mapies["lac"].items()):
137+
quantiles = mapie.conformity_score_function_.quantiles_[9]
137138
axs[i].set_xlabel("Conformity scores")
138139
axs[i].hist(mapie.conformity_scores_)
139-
axs[i].axvline(mapie.quantiles_[9], ls="--", color="k")
140-
axs[i].set_title(f"split={key}\nquantile={mapie.quantiles_[9]:.3f}")
140+
axs[i].axvline(quantiles, ls="--", color="k")
141+
axs[i].set_title(f"split={key}\nquantile={quantiles:.3f}")
141142
plt.suptitle(
142143
"Distribution of scores on each calibration fold for the "
143144
f"{methods[0]} method"

examples/classification/4-tutorials/plot_main-tutorial-binary-classification.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ def plot_scores(
188188

189189
fig, axs = plt.subplots(1, 1, figsize=(10, 5))
190190
conformity_scores = mapie_clf.conformity_scores_
191-
quantiles = mapie_clf.quantiles_
191+
quantiles = mapie_clf.conformity_score_function_.quantiles_
192192
plot_scores(alpha, conformity_scores, quantiles, 'lac', axs)
193193
plt.show()
194194

@@ -309,10 +309,11 @@ def plot_results(
309309

310310

311311
def plot_coverages_widths(alpha, coverage, width, method):
312+
quantiles = mapie_clf.conformity_score_function_.quantiles_
312313
_, axs = plt.subplots(1, 3, figsize=(15, 5))
313314
axs[0].set_xlabel("1 - alpha")
314315
axs[0].set_ylabel("Quantile")
315-
axs[0].scatter(1 - alpha, mapie_clf.quantiles_, label=method)
316+
axs[0].scatter(1 - alpha, quantiles, label=method)
316317
axs[0].legend()
317318
axs[1].scatter(1 - alpha, coverage, label=method)
318319
axs[1].set_xlabel("1 - alpha")

examples/classification/4-tutorials/plot_main-tutorial-classification.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ def plot_scores(n, alphas, scores, quantiles):
148148

149149
scores = mapie_score.conformity_scores_
150150
n = len(mapie_score.conformity_scores_)
151-
quantiles = mapie_score.quantiles_
151+
quantiles = mapie_score.conformity_score_function_.quantiles_
152152
plot_scores(n, alpha, scores, quantiles)
153153

154154
##############################################################################

examples/regression/2-advanced-analysis/plot_conformal_predictive_distribution.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def get_cumulative_distribution_function(self, X):
7171
y_pred = self.predict(X)
7272
cs = self.conformity_scores_[~np.isnan(self.conformity_scores_)]
7373
res = self.conformity_score_function_.get_estimation_distribution(
74-
X, y_pred.reshape((-1, 1)), cs
74+
y_pred.reshape((-1, 1)), cs, X=X
7575
)
7676
return res
7777

mapie/_machine_precision.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import numpy as np
22

3-
EPSILON = np.finfo(np.float64).eps
3+
EPSILON = np.float64(1e-8)
44

55
__all__ = ["EPSILON"]

0 commit comments

Comments
 (0)