1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Error, Debug)]
pub enum Error {
#[error(transparent)]
LinfaError(#[from] linfa::Error),
#[error("Expected exactly two classes for logistic regression")]
WrongNumberOfClasses,
#[error(transparent)]
ArgMinError(#[from] argmin::core::Error),
#[error("Expected `x` and `y` to have same number of rows, got {0} != {1}")]
MismatchedShapes(usize, usize),
#[error("Values must be finite and not `Inf`, `-Inf` or `NaN`")]
InvalidValues,
#[error("Rows of initial parameter ({rows}) must be the same as the number of features ({n_features})")]
InitialParameterFeaturesMismatch { rows: usize, n_features: usize },
#[error("Columns of initial parameter ({cols}) must be the same as the number of classes ({n_classes})")]
InitialParameterClassesMismatch { cols: usize, n_classes: usize },
#[error("gradient_tolerance must be a positive, finite number")]
InvalidGradientTolerance,
#[error("alpha must be a positive, finite number")]
InvalidAlpha,
#[error("Initial parameters must be finite")]
InvalidInitialParameters,
}