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>>Expand description
Compute multiple metrics in parallel
This function computes multiple metrics in parallel using Rayon.
§Arguments
y_true- True valuesy_pred- Predicted valuesmetric_fns- Vector of metric functionsconfig- 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);