Source code for incerto.conformal.metrics

"""
incerto.conformal.metrics
-------------------------
Evaluation utilities for conformal predictors.
"""

from __future__ import annotations
import torch
from typing import Sequence


[docs] def empirical_coverage(y: torch.Tensor, sets: Sequence[torch.Tensor]) -> float: """Fraction of test examples where y_i ∈ Ŝ_i.""" hits = [(yi in Si) for yi, Si in zip(y.cpu(), sets)] return float(torch.tensor(hits).float().mean())
[docs] def average_set_size(sets: Sequence[torch.Tensor]) -> float: return float(torch.tensor([len(Si) for Si in sets]).float().mean())
[docs] def conditional_coverage( y: torch.Tensor, sets: Sequence[torch.Tensor], groups: torch.Tensor, ) -> dict[int, float]: """ Coverage conditioned on *groups* (e.g., class labels). Returns a mapping group → coverage. """ cover = {} for g in torch.unique(groups): mask = groups == g cover[int(g)] = empirical_coverage( y[mask], [s for m, s in zip(mask, sets) if m] ) return cover