Source Code
confidence_calibrator.py
import numpy as np
class ConfidenceCalibrator:
def expected_calibration_error(self, probs, labels, bins=10):
bin_boundaries = np.linspace(0, 1, bins + 1)
ece = 0.0
for i in range(bins):
# Get samples in this confidence bin
mask = (probs > bin_boundaries[i]) & (probs <= bin_boundaries[i+1])
n_in_bin = np.sum(mask)
if n_in_bin > 0:
avg_confidence = np.mean(probs[mask])
avg_accuracy = np.mean(labels[mask])
ece += (n_in_bin / len(probs)) * np.abs(avg_confidence - avg_accuracy)
return ece