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 科学
27KB
513 行
RKM - Rust k-means
基于 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数据集较慢,但对dim128
和birch3
数据集较快。
许可
此代码根据MIT许可协议授权。
依赖项
~4.5MB
~71K SLoC