pub struct ClassifyEvalReport {Show 28 fields
pub accuracy: f64,
pub avg_loss: f32,
pub per_class_precision: Vec<f64>,
pub per_class_recall: Vec<f64>,
pub per_class_f1: Vec<f64>,
pub per_class_support: Vec<usize>,
pub confusion_matrix: Vec<Vec<usize>>,
pub num_classes: usize,
pub total_samples: usize,
pub eval_time_ms: u64,
pub label_names: Vec<String>,
pub cohens_kappa: f64,
pub mcc: f64,
pub top2_accuracy: f64,
pub mean_confidence: f64,
pub mean_confidence_correct: f64,
pub mean_confidence_wrong: f64,
pub samples_per_sec: f64,
pub calibration_bins: Vec<(f64, f64, usize)>,
pub ece: f64,
pub brier_score: f64,
pub log_loss: f64,
pub ci_accuracy: (f64, f64),
pub ci_macro_f1: (f64, f64),
pub ci_mcc: (f64, f64),
pub baseline_random: f64,
pub baseline_majority: f64,
pub top_confusions: Vec<(usize, usize, usize)>,
}Expand description
Evaluation report from the classification pipeline.
Contains per-class precision/recall/F1, confusion matrix, aggregate metrics,
and advanced diagnostics (Cohen’s kappa, MCC, calibration, confidence distribution).
Produced by [ClassifyTrainer::evaluate] or evaluate_checkpoint.
Fields§
§accuracy: f64Overall accuracy (0.0-1.0)
avg_loss: f32Average cross-entropy loss
per_class_precision: Vec<f64>Per-class precision (0.0-1.0)
per_class_recall: Vec<f64>Per-class recall (0.0-1.0)
per_class_f1: Vec<f64>Per-class F1 score (0.0-1.0)
per_class_support: Vec<usize>Per-class support (sample count)
confusion_matrix: Vec<Vec<usize>>Confusion matrix: confusion_matrix[true][predicted]
num_classes: usizeNumber of classes
total_samples: usizeTotal samples evaluated
eval_time_ms: u64Evaluation wall-clock time in milliseconds
label_names: Vec<String>Human-readable class names
cohens_kappa: f64Cohen’s kappa (chance-corrected agreement, -1 to 1)
mcc: f64Matthews Correlation Coefficient (-1 to 1, robust to class imbalance)
top2_accuracy: f64Top-2 accuracy (correct class in top 2 predictions)
mean_confidence: f64Mean prediction confidence (max softmax probability)
mean_confidence_correct: f64Mean confidence when prediction is correct
mean_confidence_wrong: f64Mean confidence when prediction is wrong
samples_per_sec: f64Samples per second throughput
calibration_bins: Vec<(f64, f64, usize)>Calibration bins: (mean_confidence, mean_accuracy, count) for 10 bins
ece: f64Expected Calibration Error (lower is better, 0 = perfectly calibrated)
brier_score: f64Brier score (multi-class mean squared error of probabilities, lower is better)
log_loss: f64Log loss (negative log-likelihood of true class, lower is better)
ci_accuracy: (f64, f64)Bootstrap 95% confidence intervals: (lower, upper) for (accuracy, macro_f1, mcc)
ci_macro_f1: (f64, f64)§ci_mcc: (f64, f64)§baseline_random: f64Baseline accuracies: (random, majority_class, stratified_random)
baseline_majority: f64§top_confusions: Vec<(usize, usize, usize)>Most confused class pairs: (true_class, pred_class, count)
Implementations§
Source§impl ClassifyEvalReport
impl ClassifyEvalReport
Sourcepub fn to_report(&self) -> String
pub fn to_report(&self) -> String
Format as a human-readable sklearn-style classification report.
Sourcepub fn to_json(&self) -> String
pub fn to_json(&self) -> String
Format as JSON string.
Uses serde_json::json! internally — infallible.
Sourcepub fn to_model_card(
&self,
model_name: &str,
base_model: Option<&str>,
) -> String
pub fn to_model_card( &self, model_name: &str, base_model: Option<&str>, ) -> String
Generate a HuggingFace-compatible model card (README.md) from evaluation results.
Produces a publication-quality model card with YAML front matter, summary metrics, per-class breakdown, confusion matrix (raw + normalized), calibration analysis, intended use, limitations, and ethical considerations.
Trait Implementations§
Source§impl Clone for ClassifyEvalReport
impl Clone for ClassifyEvalReport
Source§fn clone(&self) -> ClassifyEvalReport
fn clone(&self) -> ClassifyEvalReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ClassifyEvalReport
impl RefUnwindSafe for ClassifyEvalReport
impl Send for ClassifyEvalReport
impl Sync for ClassifyEvalReport
impl Unpin for ClassifyEvalReport
impl UnsafeUnpin for ClassifyEvalReport
impl UnwindSafe for ClassifyEvalReport
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.