entrenar/monitor/inference/counterfactual/
feature_change.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Serialize, Deserialize)]
7pub struct FeatureChange {
8 pub feature_idx: usize,
10 pub feature_name: Option<String>,
12 pub original_value: f32,
14 pub counterfactual_value: f32,
16 pub delta: f32,
18}
19
20impl FeatureChange {
21 pub fn new(feature_idx: usize, original: f32, counterfactual: f32) -> Self {
23 Self {
24 feature_idx,
25 feature_name: None,
26 original_value: original,
27 counterfactual_value: counterfactual,
28 delta: counterfactual - original,
29 }
30 }
31
32 pub fn with_name(mut self, name: impl Into<String>) -> Self {
34 self.feature_name = Some(name.into());
35 self
36 }
37
38 pub fn abs_delta(&self) -> f32 {
40 self.delta.abs()
41 }
42}