Quick Start
Get from cargo add to a fitted, transformed pipeline in five minutes.
1. Add the dependency
[dependencies]
datarust = "0.6"
Or with the most useful feature flags:
[dependencies]
datarust = { version = "0.6", features = ["serde", "rayon"] }
See Installation for what each feature does.
2. Create a matrix
All numeric data flows through Matrix — a row-major dense matrix backed by a single contiguous Vec<f64>:
#![allow(unused)]
fn main() {
use datarust::Matrix;
let x = Matrix::new(vec![
vec![1.0, 10.0],
vec![2.0, 20.0],
vec![3.0, 30.0],
vec![4.0, 40.0],
])?;
}
3. Fit and transform
Every numeric transformer implements the Transformer trait: call fit to learn parameters, then transform to apply them.
#![allow(unused)]
fn main() {
use datarust::scaler::StandardScaler;
use datarust::traits::Transformer;
let mut scaler = StandardScaler::new();
let standardized = scaler.fit_transform(&x)?; // fit + transform in one call
// mean=0, variance=1 per column
}
4. Train a model
Regression and classification models implement Predictor: call fit(X, y) then predict(X).
#![allow(unused)]
fn main() {
use datarust::linear_model::LinearRegression;
use datarust::traits::Predictor;
let y = vec![3.0, 5.0, 7.0, 9.0]; // y = 2x + 1 (for feature 0)
let features = x.select_columns(&[0])?; // pick one feature
let mut model = LinearRegression::new();
model.fit(&features, &y)?;
let pred = model.predict(&features)?;
}
5. Evaluate
#![allow(unused)]
fn main() {
use datarust::metrics::regression::r2_score;
let r2 = r2_score(&y, &pred)?;
println!("R² = {r2:.4}"); // ≈ 1.0 for a clean linear signal
}
6. Split and cross-validate
#![allow(unused)]
fn main() {
use datarust::model_selection::{train_test_split, cross_val_score, KFold};
use datarust::metrics::regression::r2_score;
let (x_tr, x_te, y_tr, y_te) = train_test_split(&x, &y)?;
let cv = KFold::new().with_n_splits(3);
let scores = cross_val_score(&LinearRegression::new(), &x, &y, &cv, r2_score)?;
// scores.len() == 3, one R² per fold
}
Where to go next
- All transformers at a glance: Module Guide
- Mixing numeric + categorical columns: Compose
- Why datarust is fast: Performance