///|
/// Records the accuracy change after deterministically permuting one feature.
pub struct FeatureImportance {
  source_feature_index : Int
  unpermuted_accuracy : Double
  permuted_accuracy_value : Double
  measured_accuracy_drop : Double
} derive(Eq, Debug)

///|
/// Stores feature importances ordered by descending accuracy drop.
pub struct PermutationImportance {
  original_accuracy : Double
  ordered_importances : Array[FeatureImportance]
} derive(Eq, Debug)