Skip to main content

rill_ml/
lib.rs

1//! # RillML
2//!
3//! Lightweight, serializable online machine learning for Rust applications
4//! and streaming data.
5//!
6//! RillML provides incremental learning primitives that can be embedded
7//! directly in native Rust applications: online statistics, preprocessors,
8//! linear/logistic regression, evaluation metrics, pipelines, progressive
9//! evaluation, drift detection, online decision-making (bandits), and optional
10//! serde-based state persistence.
11//!
12//! ## Quick start
13//!
14//! ```rust
15//! use rill_ml::{
16//!     metrics::Mae,
17//!     models::{LinearRegression, LinearRegressionConfig},
18//!     optim::{Optimizer, SgdConfig},
19//!     pipeline::RegressionPipeline,
20//!     preprocessing::StandardScaler,
21//!     Metric, OnlineRegressor,
22//! };
23//!
24//! let feature_count = 2;
25//! let scaler = StandardScaler::new(feature_count).unwrap();
26//! let optimizer = Optimizer::sgd(
27//!     feature_count,
28//!     SgdConfig { learning_rate: 0.05, l2: 0.0 },
29//! ).unwrap();
30//! let regression = LinearRegression::new(
31//!     feature_count,
32//!     LinearRegressionConfig { optimizer, loss: Default::default() },
33//! ).unwrap();
34//! let mut model = RegressionPipeline::new(scaler, regression).unwrap();
35//! let mut mae = Mae::default();
36//!
37//! let samples = [
38//!     ([0.1, 0.2], 0.5),
39//!     ([0.3, 0.8], 1.4),
40//!     ([0.6, 0.4], 1.1),
41//! ];
42//! for (features, target) in samples {
43//!     let prediction = model.predict(&features).unwrap();
44//!     mae.update(target, prediction).unwrap();
45//!     model.learn(&features, target).unwrap();
46//! }
47//! ```
48
49#![cfg_attr(docsrs, feature(doc_cfg))]
50
51#[cfg(feature = "bandit")]
52#[cfg_attr(docsrs, doc(cfg(feature = "bandit")))]
53pub mod bandit;
54pub mod diagnostics;
55pub mod drift;
56pub mod error;
57pub mod evaluate;
58pub mod feature_hasher;
59pub mod loss;
60pub mod metrics;
61pub mod models;
62pub mod optim;
63pub mod persistence;
64pub mod pipeline;
65pub mod preprocessing;
66pub mod sparse;
67pub mod stats;
68pub mod traits;
69
70pub use error::RillError;
71pub use evaluate::{BinaryClassificationSample, RegressionSample};
72pub use traits::{
73    Metric, OnlineBinaryClassifier, OnlineRegressor, OnlineStatistic, SparseClassifier,
74    SparseRegressor, Transformer,
75};