use crate::error::FdarError;
use crate::matrix::FdMatrix;
use crate::scalar_on_function::{FregreLmResult, FunctionalLogisticResult};
#[derive(Debug, Clone, PartialEq)]
#[non_exhaustive]
pub struct AleResult {
pub bin_midpoints: Vec<f64>,
pub ale_values: Vec<f64>,
pub bin_edges: Vec<f64>,
pub bin_counts: Vec<usize>,
pub component: usize,
}
#[must_use = "expensive computation whose result should not be discarded"]
pub fn fpc_ale(
fit: &FregreLmResult,
data: &FdMatrix,
scalar_covariates: Option<&FdMatrix>,
component: usize,
n_bins: usize,
) -> Result<AleResult, FdarError> {
crate::explain_generic::generic_ale(fit, data, scalar_covariates, component, n_bins)
}
#[must_use = "expensive computation whose result should not be discarded"]
pub fn fpc_ale_logistic(
fit: &FunctionalLogisticResult,
data: &FdMatrix,
scalar_covariates: Option<&FdMatrix>,
component: usize,
n_bins: usize,
) -> Result<AleResult, FdarError> {
crate::explain_generic::generic_ale(fit, data, scalar_covariates, component, n_bins)
}
#[derive(Debug, Clone, PartialEq)]
#[non_exhaustive]
pub struct LimeResult {
pub observation: usize,
pub attributions: Vec<f64>,
pub local_intercept: f64,
pub local_r_squared: f64,
pub kernel_width: f64,
}
#[must_use = "expensive computation whose result should not be discarded"]
pub fn lime_explanation(
fit: &FregreLmResult,
data: &FdMatrix,
scalar_covariates: Option<&FdMatrix>,
observation: usize,
n_samples: usize,
kernel_width: f64,
seed: u64,
) -> Result<LimeResult, FdarError> {
crate::explain_generic::generic_lime(
fit,
data,
scalar_covariates,
observation,
n_samples,
kernel_width,
seed,
)
}
#[must_use = "expensive computation whose result should not be discarded"]
pub fn lime_explanation_logistic(
fit: &FunctionalLogisticResult,
data: &FdMatrix,
scalar_covariates: Option<&FdMatrix>,
observation: usize,
n_samples: usize,
kernel_width: f64,
seed: u64,
) -> Result<LimeResult, FdarError> {
crate::explain_generic::generic_lime(
fit,
data,
scalar_covariates,
observation,
n_samples,
kernel_width,
seed,
)
}