use std::default::Default;
#[derive(Clone)]
pub enum LinearUpdate {
Shotgun,
CoordDescent,
}
impl ToString for LinearUpdate {
fn to_string(&self) -> String {
match *self {
LinearUpdate::Shotgun => "shotgun".to_owned(),
LinearUpdate::CoordDescent => "coord_descent".to_owned(),
}
}
}
impl Default for LinearUpdate {
fn default() -> Self { LinearUpdate::Shotgun }
}
#[derive(Builder, Clone)]
#[builder(default)]
pub struct LinearBoosterParameters {
lambda: f32,
alpha: f32,
updater: LinearUpdate,
}
impl LinearBoosterParameters {
pub(crate) fn as_string_pairs(&self) -> Vec<(String, String)> {
let mut v = Vec::new();
v.push(("booster".to_owned(), "gblinear".to_owned()));
v.push(("lambda".to_owned(), self.lambda.to_string()));
v.push(("alpha".to_owned(), self.alpha.to_string()));
v.push(("updater".to_owned(), self.updater.to_string()));
v
}
}
impl Default for LinearBoosterParameters {
fn default() -> Self {
LinearBoosterParameters {
lambda: 0.0,
alpha: 0.0,
updater: LinearUpdate::default(),
}
}
}