fdars_core/explain/
ale_lime.rs1use crate::error::FdarError;
4use crate::matrix::FdMatrix;
5use crate::scalar_on_function::{FregreLmResult, FunctionalLogisticResult};
6
7#[derive(Debug, Clone, PartialEq)]
13pub struct AleResult {
14 pub bin_midpoints: Vec<f64>,
16 pub ale_values: Vec<f64>,
18 pub bin_edges: Vec<f64>,
20 pub bin_counts: Vec<usize>,
22 pub component: usize,
24}
25
26#[must_use = "expensive computation whose result should not be discarded"]
35pub fn fpc_ale(
36 fit: &FregreLmResult,
37 data: &FdMatrix,
38 scalar_covariates: Option<&FdMatrix>,
39 component: usize,
40 n_bins: usize,
41) -> Result<AleResult, FdarError> {
42 crate::explain_generic::generic_ale(fit, data, scalar_covariates, component, n_bins)
43}
44
45#[must_use = "expensive computation whose result should not be discarded"]
51pub fn fpc_ale_logistic(
52 fit: &FunctionalLogisticResult,
53 data: &FdMatrix,
54 scalar_covariates: Option<&FdMatrix>,
55 component: usize,
56 n_bins: usize,
57) -> Result<AleResult, FdarError> {
58 crate::explain_generic::generic_ale(fit, data, scalar_covariates, component, n_bins)
59}
60
61#[derive(Debug, Clone, PartialEq)]
67pub struct LimeResult {
68 pub observation: usize,
70 pub attributions: Vec<f64>,
72 pub local_intercept: f64,
74 pub local_r_squared: f64,
76 pub kernel_width: f64,
78}
79
80#[must_use = "expensive computation whose result should not be discarded"]
86pub fn lime_explanation(
87 fit: &FregreLmResult,
88 data: &FdMatrix,
89 scalar_covariates: Option<&FdMatrix>,
90 observation: usize,
91 n_samples: usize,
92 kernel_width: f64,
93 seed: u64,
94) -> Result<LimeResult, FdarError> {
95 crate::explain_generic::generic_lime(
96 fit,
97 data,
98 scalar_covariates,
99 observation,
100 n_samples,
101 kernel_width,
102 seed,
103 )
104}
105
106#[must_use = "expensive computation whose result should not be discarded"]
112pub fn lime_explanation_logistic(
113 fit: &FunctionalLogisticResult,
114 data: &FdMatrix,
115 scalar_covariates: Option<&FdMatrix>,
116 observation: usize,
117 n_samples: usize,
118 kernel_width: f64,
119 seed: u64,
120) -> Result<LimeResult, FdarError> {
121 crate::explain_generic::generic_lime(
122 fit,
123 data,
124 scalar_covariates,
125 observation,
126 n_samples,
127 kernel_width,
128 seed,
129 )
130}