sklears_metrics/
lib.rs

1#![allow(dead_code)]
2#![allow(non_snake_case)]
3#![allow(missing_docs)]
4#![allow(deprecated)]
5#![allow(clippy::needless_range_loop)]
6#![allow(clippy::needless_borrow)]
7//! Evaluation metrics for machine learning models
8//!
9//! This crate provides a comprehensive set of metrics for evaluating machine learning models,
10//! including classification, regression, and clustering metrics.
11//!
12//! # Examples
13//!
14//! ```rust
15//! use sklears_metrics::classification::{accuracy_score, precision_score, recall_score, f1_score};
16//! use scirs2_core::ndarray::array;
17//!
18//! let y_true = array![0, 1, 2, 0, 1, 2];
19//! let y_pred = array![0, 2, 1, 0, 0, 1];
20//!
21//! let accuracy = accuracy_score(&y_true, &y_pred).unwrap();
22//! println!("Accuracy: {:.3}", accuracy);
23//! ```
24//!
25//! # Classification Metrics
26//!
27//! - `accuracy_score`: Classification accuracy
28//! - `precision_score`, `recall_score`, `f1_score`: Precision, recall, and F1 score
29//! - `fbeta_score`: F-beta score with configurable beta
30//! - `balanced_accuracy_score`: Accuracy adjusted for imbalanced datasets
31//! - `cohen_kappa_score`: Cohen's kappa coefficient
32//! - `matthews_corrcoef`: Matthews correlation coefficient
33//! - `confusion_matrix`: Confusion matrix
34//! - `log_loss`: Logarithmic loss
35//! - `hamming_loss`: Hamming loss
36//! - `jaccard_score`: Jaccard similarity coefficient
37//! - `zero_one_loss`: Zero-one classification loss
38//! - `hinge_loss`: Hinge loss for SVM
39//! - `brier_score_loss`: Brier score for probabilistic predictions
40//! - `top_k_accuracy_score`: Top-k accuracy for multi-class classification
41//! - `top_2_accuracy_score`, `top_3_accuracy_score`, `top_5_accuracy_score`: Convenience functions
42//! - `multilabel_exact_match_ratio`: Exact match ratio for multi-label classification
43//! - `multilabel_accuracy_score`: Jaccard similarity for multi-label classification
44//! - `multilabel_hamming_loss`: Hamming loss for multi-label classification
45//! - `multilabel_ranking_loss`: Ranking loss for multi-label classification
46//! - `multilabel_average_precision_score`: Average precision for multi-label classification
47//! - `demographic_parity_difference`: Fairness metric measuring difference in positive prediction rates
48//! - `demographic_parity_ratio`: Fairness metric measuring ratio of positive prediction rates
49//! - `equalized_odds_difference`: Fairness metric measuring difference in true positive rates
50//! - `equal_opportunity_difference`: Alias for equalized_odds_difference
51//! - `expected_calibration_error`: Expected Calibration Error (ECE) for model calibration assessment
52//! - `reliability_diagram`: Data for creating reliability diagrams (calibration plots)
53//! - `cost_sensitive_accuracy`: Cost-sensitive accuracy for imbalanced classification
54//! - `cost_sensitive_loss`: Cost-sensitive loss function
55//! - `expected_cost`: Expected cost given prediction probabilities
56//! - `cost_weighted_f1_score`: Cost-weighted F1 score
57//! - `spherical_score`: Spherical scoring rule for probabilistic classification
58//! - `quadratic_score`: Quadratic scoring rule for probabilistic classification
59//! - `cross_entropy`: Cross-entropy loss for multi-class classification
60//! - `kl_divergence`: Kullback-Leibler divergence between probability distributions
61//! - `js_divergence`: Jensen-Shannon divergence (symmetric version of KL divergence)
62//! - `hierarchical_precision`: Hierarchical precision with partial credit for ancestor matches
63//! - `hierarchical_recall`: Hierarchical recall with partial credit for ancestor matches
64//! - `hierarchical_f1_score`: Hierarchical F1-score for tree-structured labels
65//! - `tree_distance_loss`: Tree distance-based loss for hierarchical classification
66//! - `hierarchical_accuracy`: Hierarchical accuracy with optional partial credit
67//!
68//! # Regression Metrics
69//!
70//! - `mean_absolute_error`: Mean absolute error (MAE)
71//! - `mean_squared_error`: Mean squared error (MSE)
72//! - `root_mean_squared_error`: Root mean squared error (RMSE)
73//! - `r2_score`: Coefficient of determination (R²)
74//! - `mean_absolute_percentage_error`: Mean absolute percentage error (MAPE)
75//! - `explained_variance_score`: Explained variance score
76//! - `max_error`: Maximum error
77//! - `median_absolute_error`: Median absolute error
78//! - `mean_squared_log_error`: Mean squared logarithmic error
79//! - `root_mean_squared_log_error`: Root mean squared logarithmic error
80//! - `mean_gamma_deviance`: Mean Gamma deviance
81//! - `mean_poisson_deviance`: Mean Poisson deviance
82//! - `mean_tweedie_deviance`: Mean Tweedie deviance with power parameter
83//! - `mean_pinball_loss`: Pinball loss for quantile regression
84//! - `d2_absolute_error_score`: D² score based on absolute error
85//! - `d2_pinball_score`: D² score based on pinball loss
86//! - `d2_tweedie_score`: D² score based on Tweedie deviance
87//! - `huber_loss`: Huber loss for robust regression
88//! - `quantile_loss`: Quantile loss (alias for pinball loss)
89//! - `median_absolute_percentage_error`: Median absolute percentage error (MdAPE)
90//! - `theil_u_statistic`: Theil's U statistic for forecast accuracy
91//! - `symmetric_mean_absolute_percentage_error`: Symmetric MAPE (sMAPE)
92//! - `mean_absolute_scaled_error`: Mean Absolute Scaled Error (MASE) for time series
93//! - `robust_r2_score`: Robust R-squared variants (median, trimmed, Huber, MAD-based)
94//! - `median_r2_score`: Median-based robust R-squared
95//! - `trimmed_r2_score`: Trimmed R-squared (excluding outliers)
96//! - `huber_r2_score`: Huber loss-based robust R-squared
97//! - `mad_r2_score`: Median Absolute Deviation-based R-squared
98//! - `continuous_ranked_probability_score`: CRPS for distributional forecasts
99//! - `crps_ensemble`: CRPS for ensemble forecasts (convenience function)
100//! - `crps_gaussian`: CRPS for Gaussian predictions with analytical formula
101//! - `energy_score`: Energy score for multivariate distributional forecasts
102//! - `direction_accuracy`: Directional accuracy percentage for time series forecasting
103//! - `directional_symmetry`: Balance between upward and downward predictions
104//! - `hit_rate`: Hit rate for directional predictions above a threshold
105//! - `directional_theil_u`: Directional adaptation of Theil's U statistic
106//! - `trend_accuracy`: Trend accuracy using sliding window comparison
107//! - `prediction_interval_coverage`: Proportion of true values within prediction intervals
108//! - `mean_interval_width`: Average width of prediction intervals  
109//! - `interval_score`: Proper scoring rule combining coverage and width
110//! - `probability_integral_transform`: PIT for distributional forecast evaluation
111//! - `pit_uniformity_test`: Test PIT values for uniform distribution
112//! - `diebold_mariano_test`: Statistical test for comparing forecast accuracy
113//! - `seasonal_mase`: Seasonal Mean Absolute Scaled Error using seasonal naive forecast
114//! - `seasonal_naive_forecast_error`: Relative error compared to seasonal naive forecast
115//! - `seasonal_autocorrelation`: Autocorrelation coefficient at seasonal lag
116//! - `seasonal_strength`: Strength of seasonal component (0 to 1)
117//! - `persistence_model_comparison`: Compare against simple, seasonal, and trend persistence models
118//!
119//! # Ranking Metrics
120//!
121//! - `auc`: Area Under the Curve
122//! - `average_precision_score`: Average precision from precision-recall curve
123//! - `coverage_error`: Coverage error for multi-label ranking
124//! - `dcg_score`: Discounted Cumulative Gain
125//! - `ndcg_score`: Normalized Discounted Cumulative Gain
126//! - `roc_auc_score`: Area Under the ROC Curve (binary)
127//! - `roc_auc_score_multiclass`: Multi-class ROC AUC with OvR/OvO strategies
128//! - `precision_recall_auc_score`: Area Under the Precision-Recall Curve
129//! - `roc_curve`: Compute ROC curve coordinates
130//! - `precision_recall_curve`: Compute precision-recall curve coordinates
131//! - `mean_average_precision`: Mean Average Precision (MAP) for information retrieval
132//! - `mean_reciprocal_rank`: Mean Reciprocal Rank (MRR) for ranking evaluation
133//!
134//! # Clustering Metrics
135//!
136//! - `adjusted_rand_score`: Adjusted Rand index
137//! - `adjusted_mutual_info_score`: Adjusted mutual information
138//! - `calinski_harabasz_score`: Calinski-Harabasz index (variance ratio criterion)
139//! - `completeness_score`: Completeness metric
140//! - `davies_bouldin_score`: Davies-Bouldin index
141//! - `fowlkes_mallows_score`: Fowlkes-Mallows index
142//! - `homogeneity_score`: Homogeneity metric
143//! - `homogeneity_completeness_v_measure`: All three metrics in one call
144//! - `mutual_info_score`: Mutual information
145//! - `normalized_mutual_info_score`: Normalized mutual information
146//! - `rand_score`: Rand index
147//! - `silhouette_score`: Silhouette coefficient
148//! - `v_measure_score`: V-measure (harmonic mean of homogeneity and completeness)
149//! - `dunn_index`: Dunn index for cluster separation assessment
150//! - `gap_statistic`: Gap statistic for optimal number of clusters
151//! - `within_cluster_sum_of_squares`: Within-cluster sum of squares for cluster compactness
152//! - `between_cluster_sum_of_squares`: Between-cluster sum of squares for cluster separation
153//! - `bootstrap_stability`: Bootstrap stability for clustering robustness assessment
154//! - `jaccard_stability`: Jaccard stability coefficient between clusterings
155//! - `consensus_clustering_stability`: Consensus clustering stability metric
156//! - `perturbation_stability`: Clustering stability under data perturbations
157//! - `parameter_stability`: Clustering stability across parameter variations
158//! - `entropy`: Shannon entropy for discrete distributions
159//! - `conditional_entropy`: Conditional entropy H(Y|X)
160//! - `mutual_information`: Mutual information I(X; Y) between variables
161//! - `normalized_mutual_information_symmetric`: Normalized mutual information (symmetric)
162//! - `joint_entropy`: Joint entropy H(X, Y) of two variables
163//! - `variation_of_information`: Variation of information distance between clusterings
164//! - `information_gain`: Information gain (entropy reduction)
165//! - `information_gain_ratio`: Normalized information gain
166//! - `intra_cluster_coherence`: Average pairwise similarity within clusters
167//! - `inter_cluster_separation`: Average dissimilarity between clusters
168//! - `cluster_coherence_score`: Combined coherence score with configurable weighting
169//! - `semantic_coherence`: Semantic coherence for text clustering using word co-occurrence
170//! - `xie_beni_index`: Validity index for fuzzy clustering (compactness to separation ratio)
171//! - `ball_hall_index`: Internal validity measure (average within-cluster distance)
172//! - `hartigan_index`: Stopping rule for k-means clustering
173//! - `krzanowski_lai_index`: Stopping rule using rate of change in WCSS
174//! - `bic_clustering`: Bayesian Information Criterion for clustering
175//! - `aic_clustering`: Akaike Information Criterion for clustering
176//! - `sugar_james_index`: Model selection criterion based on distortion and degrees of freedom
177//!
178//! # Computer Vision Metrics
179//!
180//! - `psnr`: Peak Signal-to-Noise Ratio for image quality assessment
181//! - `ssim`: Structural Similarity Index for perceptual image quality
182//! - `iou_boxes`: Intersection over Union for bounding boxes
183//! - `iou_masks`: Intersection over Union for segmentation masks
184//! - `mean_average_precision`: Mean Average Precision (mAP) for object detection
185//! - `mean_iou`: Mean Intersection over Union for semantic segmentation
186//! - `pixel_accuracy`: Pixel-wise accuracy for segmentation tasks
187//! - `Detection`: Structure for object detection results
188//! - `GroundTruth`: Structure for ground truth annotations
189//!
190//! # Natural Language Processing Metrics
191//!
192//! - `bleu_score`: BLEU score for machine translation evaluation
193//! - `rouge_n_score`: ROUGE-N score for summarization evaluation
194//! - `rouge_l_score`: ROUGE-L score using longest common subsequence
195//! - `perplexity`: Perplexity for language model evaluation
196//! - `jaccard_similarity`: Jaccard similarity coefficient for text
197//! - `cosine_similarity_tfidf`: Cosine similarity using TF-IDF vectors
198//! - `edit_distance`: Levenshtein distance between strings
199//! - `normalized_edit_distance`: Normalized edit distance between strings
200//! - `SmoothingFunction`: Enumeration of smoothing methods for BLEU
201//!
202//! # Survival Analysis Metrics
203//!
204//! - `concordance_index`: C-index for survival analysis
205//! - `time_dependent_auc`: Time-dependent AUC for survival predictions
206//! - `brier_score_survival`: Brier score for survival analysis
207//! - `integrated_brier_score`: Integrated Brier score over time
208//! - `kaplan_meier_survival`: Kaplan-Meier survival function estimation
209//! - `log_rank_test`: Log-rank test for comparing survival curves
210//!
211//! # Pairwise Metrics
212//!
213//! - `euclidean_distances`: Compute euclidean distances between samples
214//! - `nan_euclidean_distances`: Euclidean distances ignoring NaN values
215//! - `pairwise_distances`: Compute distances with various metrics (Euclidean, Manhattan, Chebyshev, Minkowski, Cosine, Hamming)
216//! - `pairwise_distances_argmin`: Find minimum distances and indices
217//! - `pairwise_distances_argmin_min`: Find both argmin and min values
218//! - `pairwise_kernels`: Compute kernel matrix (Linear, Polynomial, RBF, Sigmoid, Cosine)
219//! - `wasserstein_distance`: Earth Mover's Distance between 1D distributions
220//! - `mahalanobis_distances`: Mahalanobis distance accounting for correlations
221//! - `cosine_similarity`: Cosine similarity matrix between samples
222//! - `normalized_compression_distance`: Universal metric based on compression algorithms
223//! - `normalized_compression_distance_matrix`: NCD between all pairs of sequences
224//! - `approximate_kolmogorov_complexity`: Estimate Kolmogorov complexity using compression
225//! - `information_distance`: Information distance between byte sequences
226//! - `string_kernel_similarity`: Subsequence-based similarity for strings
227//! - `string_kernel_matrix`: Pairwise string kernel similarities
228//!
229//! # Statistical Tests
230//!
231//! - `mcnemar_test`: Compare two binary classifiers using McNemar's test
232//! - `friedman_test`: Compare multiple algorithms across datasets
233//! - `wilcoxon_signed_rank_test`: Non-parametric test for paired samples
234//! - `permutation_test`: General permutation test framework
235//! - `transfer_entropy`: Directed information transfer between time series
236//! - `bidirectional_transfer_entropy`: Transfer entropy in both directions
237//! - `net_transfer_entropy`: Net information flow between time series
238//! - `multi_lag_transfer_entropy`: Transfer entropy across multiple lags
239//! - `partial_transfer_entropy`: Transfer entropy conditioning on third variable
240//!
241//! # Temporal and Dynamic Metrics
242//!
243//! - `TemporalMetricsAnalyzer`: Main analyzer for temporal metric patterns
244//! - `detect_concept_drift`: Detect concept drift using multiple methods (KS test, Page-Hinkley, ADWIN, SPC, PSI)
245//! - `analyze_temporal_trend`: Analyze trends with seasonal decomposition and change point detection
246//! - `calculate_adaptive_weights`: Calculate time-decaying weights for temporal data
247//! - `temporal_stability`: Measure temporal stability of metrics over time
248//! - `track_metric_evolution`: Track how metrics evolve with rolling statistics
249//! - `ConceptDriftResult`: Results of drift detection with confidence and magnitude
250//! - `TemporalTrendAnalysis`: Comprehensive trend analysis with seasonality detection
251//! - `MetricEvolution`: Evolution tracking with change point detection
252//! - `WindowConfig`: Configuration for sliding windows and drift detection parameters
253//!
254//! # Interpretability Metrics
255//!
256//! - `calculate_faithfulness_removal`: Faithfulness using feature removal/occlusion
257//! - `calculate_faithfulness_permutation`: Faithfulness using feature permutation
258//! - `calculate_explanation_stability`: Stability analysis using correlation, cosine similarity, rank correlation
259//! - `calculate_comprehensibility`: Comprehensibility assessment with sparsity and complexity measures
260//! - `calculate_trustworthiness`: Comprehensive trustworthiness combining multiple metrics
261//! - `evaluate_ranking_quality`: Quality assessment for feature importance rankings
262//! - `FaithfulnessResult`: Detailed faithfulness evaluation with confidence intervals
263//! - `StabilityResult`: Pairwise stability analysis across explanations
264//! - `ComprehensibilityResult`: Comprehensibility assessment with entropy and consistency
265//! - `TrustworthinessResult`: Combined trustworthiness score with individual components
266//! - `RankingQualityResult`: Feature importance ranking validation and consistency
267//!
268//! # Multi-Objective Evaluation
269//!
270//! - `pareto_frontier`: Find Pareto optimal solutions (non-dominated models)
271//! - `topsis_ranking`: TOPSIS multi-criteria decision analysis
272//! - `weighted_sum_ranking`: Weighted sum approach for model ranking
273//! - `trade_off_analysis`: Analyze trade-offs between competing metrics
274//! - `utility_optimization`: Optimize custom utility functions
275//! - `multi_objective_evaluation`: Comprehensive multi-objective evaluation
276//! - `MultiObjectiveResult`: Structure containing complete evaluation results
277//! - `MultiObjectiveConfig`: Configuration for multi-objective evaluation
278//!
279//! # Uncertainty Quantification
280//!
281//! - `bootstrap_confidence_interval`: Bootstrap confidence intervals for any metric
282//! - `bca_bootstrap_confidence_interval`: Bias-corrected and accelerated bootstrap
283//! - `bayesian_accuracy_credible_interval`: Bayesian credible intervals for accuracy
284//! - `correlation_confidence_interval`: Analytical confidence intervals for correlation
285//! - `mse_confidence_interval`: Confidence intervals for mean squared error
286//! - `uncertainty_propagation`: Uncertainty propagation for composite metrics
287//! - `bootstrap_metric_comparison`: Bootstrap hypothesis testing for metric comparison
288//! - `UncertaintyResult`: Structure containing uncertainty quantification results
289//! - `UncertaintyConfig`: Configuration for uncertainty quantification
290//!
291//! # Type Safety and Compile-Time Validation
292//!
293//! - `TypedMetric`: Type-safe metric wrapper with phantom types
294//! - `MetricCategory`: Trait for defining metric categories
295//! - `Classification`, `Regression`, `Clustering`: Phantom types for metric categories
296//! - `Metric`: Trait for computable metrics with type safety
297//! - `MetricSuite`: Type-safe collection of metrics from the same category
298//! - `CompositeMetric`: Type-safe composition of metrics from different categories
299//! - `MetricTransform`: Trait for type-safe metric transformations
300//! - `MetricBuilder`: Builder pattern for type-safe metric construction
301//! - `ValidatedMetric`: Compile-time validation using const generics
302//! - `ZeroCostMetric`: Zero-cost abstraction for metric computation
303//!
304//! # Performance Enhancements
305//!
306//! - `HighPerformanceMetricsComputer`: All-in-one high-performance metrics computation
307//! - `AdaptiveMetricsComputer`: Adaptive algorithm selection based on data characteristics
308//! - `CacheFriendlyAccumulator`: Cache-aligned data structures for metric accumulation
309//! - `LockFreeMetricsAccumulator`: Lock-free concurrent metrics accumulation
310//! - `PrefetchingMetricsComputer`: Memory prefetching for improved cache performance
311//! - `CacheOptimizedMatrixOps`: Cache-conscious matrix operations
312//! - `ProfileGuidedOptimizer`: Profile-guided optimization and performance analysis
313//! - `MemoryPrefetcher`: Memory prefetching utilities for cache optimization
314//!
315//! # Validation Framework
316//!
317//! - `MetricValidator`: Comprehensive validation framework for metric correctness
318//! - `SyntheticDataGenerator`: Generate synthetic data for testing metric implementations
319//! - `ReferenceTestCase`: Reference test cases with known expected results
320//! - `ValidationResult`: Results of metric validation with error analysis
321//! - `ComprehensiveValidationReport`: Complete validation report with multiple test types
322//! - `StabilityAnalysis`: Bootstrap-based stability analysis for metric robustness
323//! - `MetamericAnalysis`: Parameter sensitivity analysis for understanding metric behavior
324//! - `StandardReferenceDatasets`: Standard test cases for common metrics
325//!
326//! # Automated Benchmarking
327//!
328//! - `BenchmarkSuite`: Comprehensive benchmarking suite for metrics validation
329//! - `add_classification_benchmark`: Add classification metric benchmarks with datasets
330//! - `add_regression_benchmark`: Add regression metric benchmarks with datasets  
331//! - `add_clustering_benchmark`: Add clustering metric benchmarks with datasets
332//! - `run_all`: Execute all benchmarks with performance and accuracy testing
333//! - `run_scalability_test`: Test metric performance across different data sizes
334//! - `BenchmarkResult`: Detailed benchmark results with timing and accuracy
335//! - `BenchmarkReport`: Comprehensive benchmarking report with statistics
336//! - `Dataset`: Standard datasets (Iris, Wine, BreastCancer, BostonHousing, etc.)
337//! - `ReferenceImplementations`: Reference metric implementations for validation
338//!
339//! # Interactive Visualization
340//!
341//! - `create_roc_curve_data`: Generate ROC curve data with AUC calculation
342//! - `create_precision_recall_data`: Generate PR curve data with average precision
343//! - `create_calibration_plot_data`: Generate calibration plots for probability assessment
344//! - `RocCurveData`: ROC curve visualization with HTML plot generation
345//! - `PrecisionRecallData`: PR curve visualization with interactive features
346//! - `ConfusionMatrixVisualization`: Confusion matrix heatmaps with normalization
347//! - `CalibrationPlot`: Calibration plots with Brier score and ECE metrics
348//! - `LearningCurve`: Learning curve visualization for training progress
349//! - `FeatureImportanceViz`: Feature importance bar charts with ranking
350//! - `MetricDashboard`: Comprehensive metric comparison dashboard
351//! - `PlotConfig`: Configuration for plot styling and interactivity
352//!
353//! # Federated Learning Metrics
354//!
355//! - `privacy_preserving_aggregation`: Differentially private metric aggregation
356//! - `communication_efficient_aggregation`: Weighted aggregation with compression effects
357//! - `demographic_parity_across_clients`: Fairness evaluation using coefficient of variation
358//! - `equalized_odds_across_clients`: Equalized odds difference across federated clients
359//! - `communication_efficiency`: Measure efficiency as improvement per unit communication cost
360//! - `client_contribution_score`: Assess individual client contributions using Shapley-like values
361//! - `shapley_client_contributions`: Calculate exact Shapley values for client coalitions
362//! - `privacy_budget_allocation`: Track differential privacy budget across federated rounds
363//! - `analyze_convergence`: Convergence analysis for federated training with stability measures
364//! - `comprehensive_federated_evaluation`: Complete federated learning evaluation framework
365//! - `secure_aggregation`: Secure multiparty computation for metric aggregation
366//! - `FederatedConfig`: Configuration for federated learning evaluation parameters
367//! - `FederatedEvaluationResult`: Comprehensive results including global metrics, fairness, efficiency
368//! - `ConvergenceMetrics`: Convergence rate, stability, and rounds to convergence analysis
369//! - `PrivacyComposition`: Privacy composition methods (Basic, Advanced, RDP)
370//!
371//! # Adversarial Robustness Metrics
372//!
373//! - `adversarial_accuracy`: Accuracy on adversarial examples compared to true labels
374//! - `attack_success_rate`: Fraction of examples where predictions changed due to perturbations
375//! - `robust_accuracy`: Accuracy within a specific perturbation budget constraint
376//! - `certified_accuracy`: Accuracy with formal certification guarantees against perturbations
377//! - `average_perturbation_magnitude`: Average L-p norm of adversarial perturbations
378//! - `robustness_score`: Weighted combination of clean and adversarial accuracy
379//! - `adversarial_transferability`: Success rate of adversarial examples across different models
380//! - `gradient_based_robustness`: Local intrinsic dimensionality using gradient information
381//! - `adaptive_attack_resistance`: Resistance to adaptive attacks accounting for gradient masking
382//! - `empirical_robustness`: Robustness estimation using random noise perturbations
383//! - `area_under_robustness_curve`: AURC metric for robustness across perturbation budgets
384//! - `comprehensive_adversarial_evaluation`: Complete adversarial evaluation framework
385//! - `AdversarialConfig`: Configuration for perturbation budgets, norms, and attack parameters
386//! - `AdversarialResult`: Comprehensive results including multiple attack types and metrics
387//! - `AttackResult`: Individual attack results with success rates and perturbation statistics
388//! - `NormType`: Perturbation norm types (L-infinity, L2, L1, L0)
389//! - `AttackType`: Supported attack methods (FGSM, PGD, C&W, AutoAttack, etc.)
390//!
391//! # Automated Reporting
392//!
393//! - `generate_metric_report`: Create comprehensive metric reports with statistical analysis
394//! - `generate_model_comparison_report`: Automated comparison reports with significance testing
395//! - `MetricReport`: Complete report structure with metadata, summaries, and recommendations
396//! - `MetricSummary`: Individual metric summaries with interpretations and confidence intervals
397//! - `ExecutiveSummary`: High-level summary for stakeholders with key findings and business impact
398//! - `ModelComparison`: Pairwise model comparison with statistical and practical significance
399//! - `StatisticalAnalysis`: Sample size analysis, confidence intervals, and power analysis
400//! - `Recommendation`: Automated recommendations with priority levels and implementation guidance
401//! - `PerformanceTrends`: Trend analysis and performance regression detection
402//! - `ReportConfig`: Configuration for report generation including formats and significance thresholds
403//! - `ReportFormat`: Output formats (HTML, Markdown, Text, JSON)
404//! - `PerformanceGrade`: Performance grading system (Excellent, Good, Fair, Poor, Critical)
405//! - `SignificanceTest`: Statistical significance test results with p-values and effect sizes
406//! - `PracticalSignificance`: Practical significance assessment beyond statistical significance
407//!
408//! # Fluent API and Builder Patterns
409//!
410//! - `MetricsBuilder`: Fluent API for metric computation with method chaining
411//! - `MetricPreset`: Configuration presets for common use cases (ClassificationBasic, RegressionBasic, etc.)
412//! - `MetricConfig`: Configuration for metric computation with confidence intervals and averaging
413//! - `MetricResults`: Serializable metric results with metadata and confidence intervals
414//! - `ConfigBuilder`: Builder pattern for advanced metric configuration
415//! - `quick_classification_metrics`: Convenience function for rapid classification evaluation
416//! - `quick_regression_metrics`: Convenience function for rapid regression evaluation
417//! - `AveragingStrategy`: Strategies for multi-class averaging (Macro, Micro, Weighted, Binary)
418//! - `ZeroDivisionStrategy`: Handling strategies for division by zero in metrics
419//!
420//! # Async Streaming Metrics (feature = "async")
421//!
422//! - `StreamingMetricsComputer`: Async streaming metric computation with backpressure handling
423//! - `MetricStream`: Stream wrapper for real-time metric computation with reactive updates
424//! - `ChannelMetricsComputer`: Channel-based async metric computation for producer-consumer patterns
425//! - `StreamingConfig`: Configuration for async streaming operations (chunk size, concurrency, windowing)
426//! - `MetricAccumulator`: Incremental metric accumulation for streaming data with sliding windows
427//! - `streaming_accuracy`: Convenience function for streaming accuracy computation
428//! - `streaming_classification_metrics`: Convenience function for comprehensive streaming classification evaluation
429//!
430//! # Modular Framework
431//!
432//! - `Metric`: Core trait for all metrics with type-safe input/output
433//! - `ComposableMetric`: Trait for metrics that can be combined and transformed
434//! - `MetricAggregator`: Trait for aggregating multiple metric results
435//! - `MetricPipeline`: Pipeline for composing multiple metrics and aggregators
436//! - `MetricMiddleware`: Middleware system for metric processing pipelines
437//! - `MetricRegistry`: Dynamic registration and discovery of metrics
438//! - `ScoringFunction`: Extensible scoring function system
439//! - `MetricPlugin`: Plugin architecture for extending framework capabilities
440//! - `PluginManager`: Manager for loading and organizing metric plugins
441
442pub mod advanced_metrics;
443pub mod adversarial_robustness;
444#[cfg(feature = "async")]
445pub mod async_streaming;
446pub mod automated_reporting;
447pub mod basic_metrics;
448pub mod benchmarking;
449pub mod classification;
450pub mod clustering;
451pub mod computer_vision;
452pub mod display_utils;
453pub mod mathematical_foundations;
454// Distributed metrics require full MPI with libffi, which doesn't work on macOS ARM64
455#[cfg(all(feature = "distributed", not(target_os = "macos")))]
456pub mod distributed_metrics;
457pub mod fairness_metrics;
458pub mod federated_learning;
459pub mod fluent_api;
460#[cfg(feature = "cuda")]
461pub mod gpu_acceleration;
462pub mod interpretability;
463#[cfg(feature = "latex")]
464pub mod latex_export;
465pub mod memory_efficiency;
466pub mod modular_framework;
467pub mod multi_objective;
468pub mod multilabel_metrics;
469pub mod nlp;
470pub mod optimized;
471pub mod pairwise;
472pub mod performance_enhancements;
473pub mod probabilistic_metrics;
474pub mod ranking;
475pub mod regression;
476pub mod scoring;
477pub mod statistical_tests;
478pub mod survival;
479pub mod temporal;
480pub mod thread_local_optimization;
481pub mod type_safety;
482pub mod uncertainty;
483mod utils;
484pub mod validation;
485pub mod visualization;
486
487// Re-export scoring utilities
488pub use scoring::{
489    check_multimetric_scoring, check_scoring, get_scorer, get_scorer_names, make_scorer, Scorer,
490    ScorerConfig, ScoringMetric,
491};
492
493// Re-export display classes for enhanced user experience
494pub use classification::{
495    ClassificationReport, ConfusionMatrixDisplay, DetCurveDisplay, MetricsDisplay,
496    PrecisionRecallDisplay, RocCurveDisplay,
497};
498
499#[allow(non_snake_case)]
500#[cfg(test)]
501mod property_tests;
502
503#[allow(non_snake_case)]
504#[cfg(test)]
505mod comparative_tests;
506
507/// Common error type for metrics
508#[derive(thiserror::Error, Debug)]
509pub enum MetricsError {
510    #[error("Shape mismatch: expected {expected:?}, got {actual:?}")]
511    ShapeMismatch {
512        expected: Vec<usize>,
513
514        actual: Vec<usize>,
515    },
516    #[error("Invalid parameter: {0}")]
517    InvalidParameter(String),
518    #[error("Division by zero")]
519    DivisionByZero,
520    #[error("Empty input")]
521    EmptyInput,
522    #[error("Invalid labels: {0}")]
523    InvalidLabels(String),
524    #[error("Invalid input: {0}")]
525    InvalidInput(String),
526}
527
528impl From<MetricsError> for sklears_core::error::SklearsError {
529    fn from(err: MetricsError) -> Self {
530        sklears_core::error::SklearsError::InvalidInput(err.to_string())
531    }
532}
533
534/// Type alias for metrics results
535pub type MetricsResult<T> = std::result::Result<T, MetricsError>;