///|
/// Summarizes the numeric range and symmetry of a kernel matrix.
pub struct KernelDiagnostics {
  matrix_entry_count : Int
  smallest_entry : Double
  largest_entry : Double
  average_entry : Double
  average_diagonal : Double
  largest_symmetry_error : Double
} derive(Eq, Debug)

///|
/// Summarizes the retained support vectors of a binary model.
pub struct BinaryModelDiagnostics {
  retained_count : Int
  lower_class_count : Int
  upper_class_count : Int
  smallest_alpha : Double
  largest_alpha : Double
  average_alpha : Double
} derive(Eq, Debug)

///|
/// Summarizes signed training margins for a fitted binary model.
pub struct MarginDiagnostics {
  fitted_observation_count : Int
  incorrect_count : Int
  violating_count : Int
  smallest_margin : Double
  largest_margin : Double
  average_margin : Double
} derive(Eq, Debug)

///|
/// Aggregates support-vector and convergence evidence for an OvR model.
pub struct MulticlassModelDiagnostics {
  fitted_class_count : Int
  retained_support_counts : Array[Int]
  fitted_convergence_reports : Array[ConvergenceReport]
  retained_support_total : Int
  every_model_converged : Bool
} derive(Eq, Debug)