use linfa::prelude::*;
use linfa_logistic::error::Result;
use linfa_logistic::LogisticRegression;
fn main() -> Result<()> {
let mut dataset =
linfa_datasets::winequality().map_targets(|x| if *x > 6 { "good" } else { "bad" });
let alphas = &[0.1, 1., 10.];
let models: Vec<_> = alphas
.iter()
.map(|alpha| {
LogisticRegression::default()
.alpha(*alpha)
.max_iterations(150)
})
.collect();
let accuracies = dataset.cross_validate_single(5, &models, |prediction, truth| {
Ok(prediction.confusion_matrix(truth)?.accuracy())
})?;
for (alpha, accuracy) in alphas.iter().zip(accuracies.iter()) {
println!("Alpha: {alpha}, accuracy: {accuracy} ");
}
Ok(())
}