pub struct LinearRegression { /* private fields */ }Expand description
Ordinary Least Squares (OLS) linear regression.
Fits a linear model by minimizing the residual sum of squares between observed targets and predicted targets. The model equation is:
y = X β + εwhere β is the coefficient vector and ε is random error.
§Solver
Uses normal equations: β = (X^T X)^-1 X^T y via Cholesky decomposition.
§Examples
use aprender::prelude::*;
// Simple linear regression: y = 2x + 1
let x = Matrix::from_vec(4, 1, vec![
1.0,
2.0,
3.0,
4.0,
]).expect("Valid matrix dimensions");
let y = Vector::from_slice(&[3.0, 5.0, 7.0, 9.0]);
let mut model = LinearRegression::new();
model.fit(&x, &y).expect("Fit should succeed with valid data");
let predictions = model.predict(&x);
let r2 = model.score(&x, &y);
assert!(r2 > 0.99);§Performance
- Time complexity: O(n²p + p³) where n = samples, p = features
- Space complexity: O(np)
Implementations§
Source§impl LinearRegression
impl LinearRegression
Sourcepub fn with_intercept(self, fit_intercept: bool) -> Self
pub fn with_intercept(self, fit_intercept: bool) -> Self
Sets whether to fit an intercept term.
Sourcepub fn coefficients(&self) -> &Vector<f32>
pub fn coefficients(&self) -> &Vector<f32>
Sourcepub fn save<P: AsRef<Path>>(&self, path: P) -> Result<(), String>
pub fn save<P: AsRef<Path>>(&self, path: P) -> Result<(), String>
Saves the model to a binary file using bincode.
§Errors
Returns an error if serialization or file writing fails.
Sourcepub fn load<P: AsRef<Path>>(path: P) -> Result<Self, String>
pub fn load<P: AsRef<Path>>(path: P) -> Result<Self, String>
Loads a model from a binary file.
§Errors
Returns an error if file reading or deserialization fails.
Sourcepub fn save_safetensors<P: AsRef<Path>>(&self, path: P) -> Result<(), String>
pub fn save_safetensors<P: AsRef<Path>>(&self, path: P) -> Result<(), String>
Saves the model to SafeTensors format.
SafeTensors format is compatible with:
HuggingFaceecosystem- Ollama (can convert to GGUF)
PyTorch, TensorFlow- realizar inference engine
§Errors
Returns an error if:
- Model is not fitted
- Serialization fails
- File writing fails
Trait Implementations§
Source§impl Clone for LinearRegression
impl Clone for LinearRegression
Source§fn clone(&self) -> LinearRegression
fn clone(&self) -> LinearRegression
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for LinearRegression
impl Debug for LinearRegression
Source§impl Default for LinearRegression
impl Default for LinearRegression
Source§impl<'de> Deserialize<'de> for LinearRegression
impl<'de> Deserialize<'de> for LinearRegression
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Estimator for LinearRegression
impl Estimator for LinearRegression
Source§fn fit(&mut self, x: &Matrix<f32>, y: &Vector<f32>) -> Result<()>
fn fit(&mut self, x: &Matrix<f32>, y: &Vector<f32>) -> Result<()>
Fits the linear regression model using normal equations.
Solves: β = (X^T X)^-1 X^T y
§Errors
Returns an error if:
- Input dimensions don’t match
- Not enough samples for the number of features (underdetermined system)
- Matrix is singular (not positive definite)
Auto Trait Implementations§
impl Freeze for LinearRegression
impl RefUnwindSafe for LinearRegression
impl Send for LinearRegression
impl Sync for LinearRegression
impl Unpin for LinearRegression
impl UnwindSafe for LinearRegression
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more