Improve probability reliability
A classifier produces probabilities that are poorly aligned with observed frequencies.
Scikit-Learn · Class
CalibratedClassifierCV calibrates a classifier’s probability estimates with cross-validation. It supports sigmoid, isotonic, and temperature scaling, and can average predictions from calibrated fold-specific models.
Cross-validates a classifier and learns a calibration mapping so its probability outputs better reflect observed class frequencies. With ensemble mode enabled, it trains and calibrates one classifier per split, then averages their probability predictions.
class sklearn.calibration.CalibratedClassifierCV(estimator=None, *, method='sigmoid', cv=None, n_jobs=None, ensemble='auto')| Name | Type | Description |
|---|---|---|
estimator | classifier, default=None | Classifier whose outputs are calibrated; the current API uses an estimator supporting classification. |
method | {'sigmoid', 'isotonic', 'temperature'}, default='sigmoid' | Calibration technique: sigmoid, isotonic, or temperature. |
cv | int, cross-validation generator, iterable, or None, default=None | Cross-validation strategy used to fit classifier and calibrator. |
ensemble | bool or 'auto', default='auto' | Whether to retain one calibrated classifier for each cross-validation split. |
n_jobs | int, default=None | Number of jobs to run in parallel during fitting; None means one job unless a backend changes that behavior. |
An estimator that provides calibrated class-probability predictions through predict_proba.
from sklearn.calibration import CalibratedClassifierCV
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
X, y = make_classification(random_state=0)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.25, random_state=0
)
model = CalibratedClassifierCV(
LogisticRegression(max_iter=1000), method="sigmoid", cv=3
)
model.fit(X_train, y_train)
probabilities = model.predict_proba(X_test)
print(probabilities[:2])Fits a logistic classifier with cross-validated sigmoid probability calibration, then predicts calibrated class probabilities.
A classifier produces probabilities that are poorly aligned with observed frequencies.
A classifier lacks trustworthy native probability estimates but exposes decision scores.
A multiclass model needs class-wise probability calibration.
CalibratedClassifierCV uses cross-validation to fit the classifier and calibrator without using the classifier's training predictions as calibration targets. With ensemble=True, each split produces a calibrated classifier, and prediction probabilities are averaged across them.
Follow-up: What calibration methods are available? The documented methods are sigmoid and isotonic; the current class reference also lists temperature scaling.
The method parameter selects the calibration technique. Sigmoid corresponds to Platt's method, while isotonic is non-parametric; the current reference additionally documents temperature scaling.
Follow-up: When might a non-parametric method be risky? Isotonic calibration can be more flexible but generally needs enough calibration data to avoid fitting noise.
For every cross-validation split, a clone of the base estimator is trained on the training subset, predicts the held-out subset, and those predictions fit the calibrator. In multiclass settings, one calibrator is fit for each class.
Follow-up: How are final probabilities formed in ensemble mode? The calibrated probabilities from the split-specific estimators are averaged.
sklearn.calibration.calibration_curvesklearn.calibration.CalibrationDisplaysklearn.isotonic.IsotonicRegressionsklearn.linear_model.LogisticRegression