@@ -68,10 +68,21 @@ use crate::optimization::first_order::{FirstOrderOptimizer, OptimizerResult};
68
68
use crate :: optimization:: line_search:: Backtracking ;
69
69
use crate :: optimization:: FunctionOrder ;
70
70
71
+ #[ cfg_attr( feature = "serde" , derive( Serialize , Deserialize ) ) ]
72
+ #[ derive( Debug , Clone ) ]
73
+ /// Solver options for Logistic regression. Right now only LBFGS solver is supported.
74
+ pub enum LogisticRegressionSolverName {
75
+ /// Limited-memory Broyden–Fletcher–Goldfarb–Shanno method, see [LBFGS paper](http://users.iems.northwestern.edu/~nocedal/lbfgsb.html)
76
+ LBFGS ,
77
+ }
78
+
71
79
/// Logistic Regression parameters
72
80
#[ cfg_attr( feature = "serde" , derive( Serialize , Deserialize ) ) ]
73
81
#[ derive( Debug , Clone ) ]
74
- pub struct LogisticRegressionParameters { }
82
+ pub struct LogisticRegressionParameters {
83
+ /// Solver to use for estimation of regression coefficients.
84
+ pub solver : LogisticRegressionSolverName ,
85
+ }
75
86
76
87
/// Logistic Regression
77
88
#[ cfg_attr( feature = "serde" , derive( Serialize , Deserialize ) ) ]
@@ -105,9 +116,19 @@ struct BinaryObjectiveFunction<'a, T: RealNumber, M: Matrix<T>> {
105
116
phantom : PhantomData < & ' a T > ,
106
117
}
107
118
119
+ impl LogisticRegressionParameters {
120
+ /// Solver to use for estimation of regression coefficients.
121
+ pub fn with_solver ( mut self , solver : LogisticRegressionSolverName ) -> Self {
122
+ self . solver = solver;
123
+ self
124
+ }
125
+ }
126
+
108
127
impl Default for LogisticRegressionParameters {
109
128
fn default ( ) -> Self {
110
- LogisticRegressionParameters { }
129
+ LogisticRegressionParameters {
130
+ solver : LogisticRegressionSolverName :: LBFGS ,
131
+ }
111
132
}
112
133
}
113
134
0 commit comments