uncertainty.py 523 B

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