sklears_model_selection/epistemic_uncertainty/
uncertainty_utilities.rs

1use super::aleatoric_quantifier::AleatoricUncertaintyQuantifier;
2use super::epistemic_quantifier::EpistemicUncertaintyQuantifier;
3use super::uncertainty_config::*;
4use super::uncertainty_quantifier::UncertaintyQuantifier;
5use super::uncertainty_results::*;
6use scirs2_core::ndarray::{Array1, Array2};
7
8pub fn quantify_epistemic_uncertainty<E, P>(
9    models: &[E],
10    x: &Array2<f64>,
11    y_true: Option<&Array1<f64>>,
12    config: Option<EpistemicUncertaintyConfig>,
13) -> Result<EpistemicUncertaintyResult, Box<dyn std::error::Error>>
14where
15    E: Clone,
16    P: Clone,
17{
18    let quantifier = match config {
19        Some(cfg) => EpistemicUncertaintyQuantifier::with_config(cfg),
20        None => EpistemicUncertaintyQuantifier::new(),
21    };
22
23    quantifier.quantify::<E, P>(models, x, y_true)
24}
25
26pub fn quantify_aleatoric_uncertainty<E, P>(
27    models: &[E],
28    x: &Array2<f64>,
29    y_true: Option<&Array1<f64>>,
30    config: Option<AleatoricUncertaintyConfig>,
31) -> Result<AleatoricUncertaintyResult, Box<dyn std::error::Error>>
32where
33    E: Clone,
34    P: Clone,
35{
36    let quantifier = match config {
37        Some(cfg) => AleatoricUncertaintyQuantifier::with_config(cfg),
38        None => AleatoricUncertaintyQuantifier::new(),
39    };
40
41    quantifier.quantify::<E, P>(models, x, y_true)
42}
43
44pub fn quantify_uncertainty<E, P>(
45    models: &[E],
46    x: &Array2<f64>,
47    y_true: Option<&Array1<f64>>,
48    config: Option<UncertaintyQuantificationConfig>,
49) -> Result<UncertaintyQuantificationResult, Box<dyn std::error::Error>>
50where
51    E: Clone,
52    P: Clone,
53{
54    let quantifier = match config {
55        Some(cfg) => UncertaintyQuantifier::with_config(cfg),
56        None => UncertaintyQuantifier::new(),
57    };
58
59    quantifier.quantify::<E, P>(models, x, y_true)
60}