10 releases (6 breaking)

0.7.0 Oct 16, 2023
0.6.1 Dec 3, 2022
0.6.0 Jun 15, 2022
0.5.1 Mar 1, 2022
0.1.0 Nov 23, 2019

#29 in Machine learning

Download history 2472/week @ 2023-11-21 2758/week @ 2023-11-28 3880/week @ 2023-12-05 2503/week @ 2023-12-12 1937/week @ 2023-12-19 404/week @ 2023-12-26 2847/week @ 2024-01-02 3113/week @ 2024-01-09 3133/week @ 2024-01-16 3157/week @ 2024-01-23 2878/week @ 2024-01-30 3312/week @ 2024-02-06 2636/week @ 2024-02-13 2821/week @ 2024-02-20 3890/week @ 2024-02-27 3847/week @ 2024-03-05

13,675 downloads per month
Used in 3 crates (via egobox-moe)

MIT/Apache

435KB
8K SLoC

Clustering

linfa-clustering aims to provide pure Rust implementations of popular clustering algorithms.

The big picture

linfa-clustering is a crate in the linfa ecosystem, an effort to create a toolkit for classical Machine Learning implemented in pure Rust, akin to Python's scikit-learn.

You can find a roadmap (and a selection of good first issues) here - contributors are more than welcome!

Current state

linfa-clustering currently provides implementation of the following clustering algorithms, in addition to a couple of helper functions:

  • K-Means
  • DBSCAN
  • Approximated DBSCAN (Currently an alias for DBSCAN, due to its superior performance)
  • Gaussian Mixture Model

Implementation choices, algorithmic details and a tutorial can be found here.

BLAS/Lapack backend

We found that the pure Rust implementation maintained similar performance to the BLAS/LAPACK version and have removed it with this PR. Thus, to reduce code complexity BLAS support has been removed for this module.

License

Dual-licensed to be compatible with the Rust project.

Licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 or the MIT license http://opensource.org/licenses/MIT, at your option. This file may not be copied, modified, or distributed except according to those terms.

Dependencies

~6–16MB
~254K SLoC