sklears_model_selection/epistemic_uncertainty/
uncertainty_config.rs1use super::calibration::CalibrationMethod;
2use super::uncertainty_decomposition::UncertaintyDecompositionMethod;
3use super::uncertainty_methods::*;
4
5#[derive(Debug, Clone)]
6pub struct EpistemicUncertaintyConfig {
7 pub method: EpistemicUncertaintyMethod,
8 pub confidence_level: f64,
9 pub random_state: Option<u64>,
10 pub calibration_method: CalibrationMethod,
11 pub temperature_scaling: bool,
12}
13
14#[derive(Debug, Clone)]
15pub struct AleatoricUncertaintyConfig {
16 pub method: AleatoricUncertaintyMethod,
17 pub confidence_level: f64,
18 pub random_state: Option<u64>,
19 pub noise_regularization: f64,
20 pub min_variance: f64,
21}
22
23#[derive(Debug, Clone)]
24pub struct UncertaintyQuantificationConfig {
25 pub epistemic_config: EpistemicUncertaintyConfig,
26 pub aleatoric_config: AleatoricUncertaintyConfig,
27 pub decomposition_method: UncertaintyDecompositionMethod,
28 pub confidence_level: f64,
29 pub random_state: Option<u64>,
30}
31
32impl Default for EpistemicUncertaintyConfig {
33 fn default() -> Self {
34 Self {
35 method: EpistemicUncertaintyMethod::Bootstrap {
36 n_bootstrap: 100,
37 sample_ratio: 0.8,
38 },
39 confidence_level: 0.95,
40 random_state: None,
41 calibration_method: CalibrationMethod::TemperatureScaling,
42 temperature_scaling: true,
43 }
44 }
45}
46
47impl Default for AleatoricUncertaintyConfig {
48 fn default() -> Self {
49 Self {
50 method: AleatoricUncertaintyMethod::ResidualBasedUncertainty { window_size: 10 },
51 confidence_level: 0.95,
52 random_state: None,
53 noise_regularization: 0.01,
54 min_variance: 1e-6,
55 }
56 }
57}
58
59impl Default for UncertaintyQuantificationConfig {
60 fn default() -> Self {
61 Self {
62 epistemic_config: EpistemicUncertaintyConfig::default(),
63 aleatoric_config: AleatoricUncertaintyConfig::default(),
64 decomposition_method: UncertaintyDecompositionMethod::VarianceDecomposition,
65 confidence_level: 0.95,
66 random_state: None,
67 }
68 }
69}