From 0a6fac86f5f012bac8bf8becc2da94ac684e5b05 Mon Sep 17 00:00:00 2001 From: Georeth Zhou Date: Fri, 5 Dec 2025 15:54:54 +0800 Subject: [PATCH 1/2] fix lasso doc typo --- src/linear/lasso.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/linear/lasso.rs b/src/linear/lasso.rs index 62d96efa..59c60ddc 100644 --- a/src/linear/lasso.rs +++ b/src/linear/lasso.rs @@ -166,7 +166,7 @@ pub struct LassoSearchParameters { /// The maximum number of iterations pub max_iter: Vec, #[cfg_attr(feature = "serde", serde(default))] - /// The maximum number of iterations + /// If false, force the intercept parameter (beta_0) to be zero. pub fit_intercept: Vec, } From a99c0072c99356830d8c5232fe24a65d8a95316e Mon Sep 17 00:00:00 2001 From: Georeth Zhou Date: Fri, 5 Dec 2025 15:55:55 +0800 Subject: [PATCH 2/2] fix lasso optimizer bug --- src/linear/lasso_optimizer.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/linear/lasso_optimizer.rs b/src/linear/lasso_optimizer.rs index fe099cd3..b2efe19f 100644 --- a/src/linear/lasso_optimizer.rs +++ b/src/linear/lasso_optimizer.rs @@ -53,6 +53,7 @@ impl> InteriorPointOptimizer { let lambda = lambda.max(T::epsilon()); //parameters + let max_ls_iter = 100; let pcgmaxi = 5000; let min_pcgtol = T::from_f64(0.1).unwrap(); let eta = T::from_f64(1E-3).unwrap(); @@ -68,7 +69,6 @@ impl> InteriorPointOptimizer { y.to_owned() }; - let mut max_ls_iter = 100; let mut pitr = 0; let mut w = Vec::zeros(p); let mut neww = w.clone(); @@ -170,7 +170,7 @@ impl> InteriorPointOptimizer { s = T::one(); let gdx = grad.dot(&dxu); - let lsiter = 0; + let mut lsiter = 0; while lsiter < max_ls_iter { for i in 0..p { neww[i] = w[i] + s * dx[i]; @@ -195,7 +195,7 @@ impl> InteriorPointOptimizer { } } s = beta * s; - max_ls_iter += 1; + lsiter += 1; } if lsiter == max_ls_iter {