linreg_core/cross_validation/mod.rs
1// ============================================================================
2// Cross Validation Module
3// ============================================================================
4
5//! K-Fold Cross Validation for linear regression models.
6//!
7//! This module provides cross-validation functionality for estimating out-of-sample
8//! prediction error and selecting optimal hyperparameters (e.g., lambda for
9//! regularized regression).
10//!
11//! # Supported Models
12//!
13//! - **OLS** — Ordinary Least Squares regression
14//! - **Ridge** — L2-regularized regression
15//! - **Lasso** — L1-regularized regression
16//! - **Elastic Net** — Combined L1/L2 regularization
17//!
18//! # Basic Usage
19//!
20//! ```rust
21//! use linreg_core::cross_validation::{kfold_cv_ols, KFoldOptions};
22//!
23//! let y = vec![2.5, 3.7, 4.2, 5.1, 6.3, 7.0, 7.5, 8.1];
24//! let x1 = vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0];
25//! let x2 = vec![2.0, 4.0, 5.0, 4.0, 3.0, 4.5, 5.5, 6.0];
26//! let names = vec!["Intercept".into(), "X1".into(), "X2".into()];
27//!
28//! let options = KFoldOptions {
29//! n_folds: 5,
30//! shuffle: true,
31//! seed: Some(42),
32//! };
33//!
34//! let result = kfold_cv_ols(&y, &[x1, x2], &names, &options)?;
35//! println!("CV RMSE: {:.4} (+/- {:.4})", result.mean_rmse, result.std_rmse);
36//! # Ok::<(), linreg_core::Error>(())
37//! ```
38
39// Submodules
40pub mod kfold;
41pub mod metrics;
42pub mod splits;
43pub mod types;
44
45// Re-export public API
46pub use types::{CVResult, FoldResult, KFoldOptions};
47
48// Re-export CV functions
49pub use kfold::{kfold_cv_elastic_net, kfold_cv_lasso, kfold_cv_ols, kfold_cv_ridge};