5 个版本 (3 个重大更新)

使用旧的 Rust 2015

0.8.1 2020年1月22日
0.8.0 2019年7月25日
0.7.0 2019年6月11日
0.5.0 2018年11月18日
0.3.0 2018年2月13日

#471 in 科学

MIT 许可证

27KB
513

RKM - Rust k-means

Build Statusdocs crates.io

基于 C++ 实现 k-means 聚类算法 的简单 Rust 实现,dkm

此实现是通用的,可以接受任何满足特质要求的类型。至少应支持 Rust 内置的数值浮点类型。使用 rayon 进行并行处理以改善可扩展性,但代价是小型数据集的性能有所下降。

parallel 功能启用了并行性,可以在复杂情况下加速算法。对于小型数据集,并行算法可能比非并行算法慢,但对于高维数据集则要快得多。在使用之前,请确保使用两种配置对您的用例进行基准测试。

已知可以编译 against Rust 稳定版 1.32.0。

用法

通过调用 rkm::kmeans_lloyd 来计算数据集的 k-means 聚类,将您的数据集放入一个 2D ndarray 数组中,以及您希望将数据分割成多少个聚类的数量。返回值将是一个包含聚类均值/质心的元组(作为一个 2D ndarray),以及一个将每个输入数据点映射到均值数组中元素的 Vec

请参阅 src/example.rs 以获取简单的用法示例。

待办事项

  • 终止条件(迭代和增量)。

数据

此库包含一组基准测试,位于 src/bench.rs 中。数据集如下:

iris.data.csv 从不同鸢尾花植物的测量中获取的自然数据。150 个点,2 个维度,3 个聚类。来源:UCI 机器学习存储库

s1.data.csv 人工合成数据。5000个数据点,2个维度,15个簇。来源:P. Fränti 和 O. Virmajoki,"用于聚类问题的迭代收缩方法",《模式识别》,39(5),761-765,2006年5月。

birch3.data.csv 人工合成大数据集。100000个数据点,2个维度,100个簇。来源:张等人,“BIRCH:一种新的数据聚类算法及其应用”,《数据挖掘与知识发现》,1(2),141-182,1997年。

dim128.data.csv 高维人工合成数据。1024个数据点,128个维度,16个簇。来源:P. Fränti,O. Virmajoki 和 V. Hautamäki,“使用k-最近邻图的快速层次聚类”,《IEEE 传输:模式分析与机器智能》,28(11),1875-1881,2006年11月。

dkm相比,此实现对小鸢尾花和s1数据集较慢,但对dim128birch3数据集较快。

许可

此代码根据MIT许可协议授权。

依赖项

~4.5MB
~71K SLoC