# pyright: basic from __future__ import annotations import numpy as np def confidence_certainty(y_prob: np.ndarray) -> np.ndarray: # 2 * |p - 0.5| maps 0 -> very uncertain and 1 -> very certain. return 2.0 * np.abs(np.asarray(y_prob, dtype=float) - 0.5) def confidence_uncertainty(y_prob: np.ndarray) -> np.ndarray: # Normalized uncertainty in [0, 1]: 1 at p=0.5 and 0 at p in {0, 1}. uncertainty = 1.0 - confidence_certainty(np.asarray(y_prob, dtype=float)) return np.clip(uncertainty, 0.0, 1.0)