Skip to main content

ndarray_glm/
error.rs

1//! define the error enum for the result of regressions
2
3use 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>>;