shap_rs/explainers/
additive.rs1use crate::{Explainer, Explanation, Result};
2use ndarray::{Array2, Array3, ArrayView2};
3pub struct AdditiveExplainer<F> {
6 decompose: F,
7}
8impl<F> AdditiveExplainer<F> {
9 pub fn new(decompose: F) -> Self {
10 Self { decompose }
11 }
12}
13impl<F> Explainer for AdditiveExplainer<F>
14where
15 F: Fn(ArrayView2<'_, f64>) -> Result<(Array2<f64>, Array3<f64>)>,
16{
17 fn explain(&self, x: ArrayView2<'_, f64>) -> Result<Explanation> {
18 let (base, values) = (self.decompose)(x)?;
19 Explanation::new(values, base, x.to_owned())
20 }
21}