1use ndarray_linalg::error::LinalgError;
4use thiserror::Error;
5
6use crate::{irls::IrlsStep, num::Float};
7
8#[derive(Error, Debug)]
9pub enum RegressionError<F: Float> {
10 #[error("Inconsistent input: {0}")]
11 BadInput(String),
12 #[error("Invalid response data: {0}")]
13 InvalidY(String),
14 #[error("Model build error: {0}")]
15 BuildError(String),
16 #[error("Linear algebra error. Consider adding L2 regularization.")]
17 LinalgError {
18 #[from]
19 source: LinalgError,
20 },
21 #[error("Maximum iterations ({n_iter}) reached")]
22 MaxIter {
23 n_iter: usize,
24 history: Vec<IrlsStep<F>>,
25 },
26}
27
28pub type RegressionResult<T, F> = Result<T, RegressionError<F>>;