compute_metrics_batch

Function compute_metrics_batch 

Source
pub fn compute_metrics_batch<T, S1, S2, D1, D2>(
    y_true: &ArrayBase<S1, D1>,
    y_pred: &ArrayBase<S2, D2>,
    metric_fns: &[Box<ParallelMetricFn<S1, S2, D1, D2>>],
    config: &ParallelConfig,
) -> Result<Vec<f64>>
where T: Clone + Send + Sync, S1: Data<Elem = T> + Sync, S2: Data<Elem = T> + Sync, D1: Dimension + Sync, D2: Dimension + Sync,
Expand description

Compute multiple metrics in parallel

This function computes multiple metrics in parallel using Rayon.

§Arguments

  • y_true - True values
  • y_pred - Predicted values
  • metric_fns - Vector of metric functions
  • config - Parallel configuration

§Returns

  • Vector of metric values

§Examples

use scirs2_core::ndarray::Array1;
use scirs2_metrics::optimization::parallel::{compute_metrics_batch, ParallelConfig};
use scirs2_metrics::error::Result;
use scirs2_metrics::classification::{accuracy_score, precision_score};

// Create sample data
let y_true = Array1::from_vec(vec![0, 1, 2, 0, 1, 2]);
let y_pred = Array1::from_vec(vec![0, 2, 1, 0, 0, 2]);

// Define metric functions
let metric_fns: Vec<Box<dyn Fn(&Array1<i32>, &Array1<i32>) -> Result<f64> + Send + Sync>> = vec![
    Box::new(|a, b| accuracy_score(a, b)),
    Box::new(|a, b| precision_score(a, b, 1)),
];

// Compute metrics in parallel
let config = ParallelConfig::default();
let results = compute_metrics_batch(&y_true, &y_pred, &metric_fns, &config).unwrap();

// Check results
assert_eq!(results.len(), 2);