Toggle Menu
Prev Up Next

scikit-learn 1.3.2
Other versions

Please cite us if you use the software.

# `sklearn.calibration`.calibration_curve

sklearn.calibration.calibration_curve(y_true, y_prob, *, pos_label=None, n_bins=5, strategy='uniform')

  Compute true and predicted probabilities for a calibration curve.

  The method assumes the inputs come from a binary classifier, and discretize the [0, 1] interval into bins.

  Calibration curves may also be referred to as reliability diagrams.

  Read more in the User Guide.

  Parameters:
    y_true array-like of shape (n_samples,)

      True targets.

    y_prob array-like of shape (n_samples,)

      Probabilities of the positive class.

    pos_label int, float, bool or str, default=None

      The label of the positive class.

      New in version 1.1.

    n_bins int, default=5

      Number of bins to discretize the [0, 1] interval. A bigger number requires more data. Bins with no samples (i.e. without corresponding values in `y_prob`) will not be returned, thus the returned arrays may have less than `n_bins` values.

    strategy{‘uniform’, ‘quantile’}, default=’uniform’

      Strategy used to define the widths of the bins.

      uniform

        The bins have identical widths.

      quantile

        The bins have the same number of samples and depend on `y_prob`.

  Returns:
    prob_true ndarray of shape (n_bins,) or smaller

      The proportion of samples whose class is the positive class, in each bin (fraction of positives).

    prob_pred ndarray of shape (n_bins,) or smaller

      The mean predicted probability in each bin.

  References

  Alexandru Niculescu-Mizil and Rich Caruana (2005) Predicting Good Probabilities With Supervised Learning, in Proceedings of the 22nd International Conference on Machine Learning (ICML). See section 4 (Qualitative Analysis of Predictions).

  Examples

      >>> import numpy as np
      >>> from sklearn.calibration import calibration_curve
      >>> y_true = np.array([0, 0, 0, 0, 1, 1, 1, 1, 1])
      >>> y_pred = np.array([0.1, 0.2, 0.3, 0.4, 0.65, 0.7, 0.8, 0.9,  1.])
      >>> prob_true, prob_pred = calibration_curve(y_true, y_pred, n_bins=3)
      >>> prob_true
      array([0. , 0.5, 1. ])
      >>> prob_pred
      array([0.2  , 0.525, 0.85 ])