use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct FeatureChange {
pub feature_idx: usize,
pub feature_name: Option<String>,
pub original_value: f32,
pub counterfactual_value: f32,
pub delta: f32,
}
impl FeatureChange {
pub fn new(feature_idx: usize, original: f32, counterfactual: f32) -> Self {
Self {
feature_idx,
feature_name: None,
original_value: original,
counterfactual_value: counterfactual,
delta: counterfactual - original,
}
}
pub fn with_name(mut self, name: impl Into<String>) -> Self {
self.feature_name = Some(name.into());
self
}
pub fn abs_delta(&self) -> f32 {
self.delta.abs()
}
}