rcf3 provides streaming anomaly detectors in Rust with Python bindings.
- Random Cut Forest for online anomaly detection, feature attribution, neighborhood search, missing-value imputation, and time-series forecasting
- Online Isolation Forest for numerical streams with sliding-window updates
- mStream for mixed numerical/categorical streaming anomaly detection with feature-level score decomposition
- Rust and Python APIs over the same core implementation
Use Forest when your stream is represented as numerical observations and you want the broader RCF feature set:
use rcf3::Forest;
let mut forest = Forest::builder(2).build()?;
forest.update(&[1.5, 2.3])?;Use OnlineIForest when you want a compact numerical detector with sliding-window updates:
use rcf3::OnlineIForest;
let mut detector = OnlineIForest::builder(2).build()?;
let score = detector.update_and_score(&[1.5, 2.3])?;Use MStream when each event has separate numerical and categorical aspects:
use rcf3::MStream;
let mut detector = MStream::builder(2, 1).build()?;
let score = detector.update_and_score(&[1.5, 2.0], &[7], 1)?;The crate supports several compile-time features:
Enables use of the Rust standard library. Disable this for no_std environments:
[dependencies]
rcf3 = { version = "0.3", default-features = false }Provides JSON serialization and deserialization support for persisted detector state:
[dependencies]
rcf3 = { version = "0.3", features = ["serde", "std"] }Builds Python bindings using PyO3, enabling use from Python. Automatically enables serde and std:
[dependencies]
rcf3 = { version = "0.3", features = ["python"] }To use just the core algorithm without serialization:
[dependencies]
rcf3 = { version = "0.3", default-features = false, features = ["std"] }Licensed under either of the Apache License 2.0 or MIT license, at your option.