use std::default::Default;
use derive_builder::Builder;
#[derive(Clone, Default)]
pub enum LinearUpdate {
#[default]
Shotgun,
CoordDescent,
}
impl ToString for LinearUpdate {
fn to_string(&self) -> String {
match *self {
LinearUpdate::Shotgun => "shotgun".to_owned(),
LinearUpdate::CoordDescent => "coord_descent".to_owned(),
}
}
}
#[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 v = vec![
("booster".to_owned(), "gblinear".to_owned()),
("lambda".to_owned(), self.lambda.to_string()),
("alpha".to_owned(), self.alpha.to_string()),
("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(),
}
}
}