kmeans_uni
Fast, safe K-Means++ for CPU-only workloads with optional SIMD acceleration. Supports Euclidean distance and dot-product scoring, provides both classic Lloyd iterations and a mini-batch variant, and includes parity tests against linfa-clustering to guard correctness. Benchmarks show significantly faster training and prediction than linfa on the same CPU. The crate builds on stable Rust.
Key Features
- 100% safe Rust (
#![forbid(unsafe_code)]) with a small dependency set. - Optimized for speed, beats
linfa-clusteringin AArch64/x86_64 benches for training and prediction. - Optional SIMD acceleration (
widefeature) and WebAssembly support (seeWASM.md). - Ergonomic builder API
Quickstart
use KMeansBuilder;
const N_COLS: usize = 2;
let data: = vec!;
match new
.iterations
.cpu_simd // requires default "wide" feature
.euclidean
.build
.fit
Mini-batch training for large datasets:
use KMeansBuilder;
match new
.iterations // iterations = number of batches
.cpu_scalar
.euclidean
.mini_batch_rel_tolerance
.mini_batch_patience
.build
.fit_mini_batch_from_source
Crate features
wide(default): enables SIMD CPU backend for K-Means (f32andf64) via thewidecrate.- As
std::simdstabilizes, you can expect to squeeze more performance from portable SIMD without depending onwide. serde: deriveSerialize/Deserializeon public types.wasm: build with a wasm-friendly configuration (sequential execution, no Rayon). SeeWASM.mdfor a browser demo and build steps.- Build without defaults (
--no-default-features) to force scalar-only code paths.
License
Licensed under either of:
- MIT license
- Apache License, Version 2.0
at your option.