///|
/// Stores one class's confusion-derived rates.
pub struct ClassMetric {
  class_label : Int
  true_positive_count : Int
  false_positive_count : Int
  false_negative_count : Int
  class_support : Int
  precision_value : Double
  recall_value : Double
  f1_value : Double
} derive(Eq, Debug)

///|
/// Stores deterministic multiclass classification metrics.
pub struct ClassificationMetrics {
  ordered_classes : Array[Int]
  confusion_counts : Array[Array[Int]]
  class_metrics : Array[ClassMetric]
  total_observations : Int
  accuracy_value : Double
  error_rate_value : Double
  balanced_accuracy_value : Double
  macro_precision_value : Double
  macro_recall_value : Double
  macro_f1_value : Double
  micro_precision_value : Double
  micro_recall_value : Double
  micro_f1_value : Double
  weighted_precision_value : Double
  weighted_recall_value : Double
  weighted_f1_value : Double
} derive(Eq, Debug)