C++ implementation of the clustering algorithm 聚类算法的c++实现
一个速度更快,内存占用更小,使用更简单的聚类算法实现.大体上分为三个大块,每个算法的单机在线实现,这种也是大家最常见和常用的版本,支持的数据量不超过内存大小;另一块是单机改进版,单机的离线实现,将会支持原数据超过内存,但不超过本机磁盘大小的数据量;第三块是分布式集群的实现,将实现分布式聚类算法,以支持更大的数据量. P.S. 认为每条数据的每个维是一个double,所以,大约11,585*11,585的数据量为1GB内存,可以以此作为参考决定实际使用时需要的版本.
本程序采用的不是基于面向对象的开发,而是采用的模块式开发.可以看到模块按照namespace划分,各自按功能隔离.
| 算法 | 单机在线 | 单机离线 | 分布式 |
|---|---|---|---|
| k-means | 100% | 0% | 0% |
| 二分k-means | 100% | 0% | 0% |
因为本项目是业余时间开发,所以进度并不会很快,代码质量也难以保证,所以建议,暂时请勿用于商业或正式环境.
k-mean初始版本可以使用,目前还处于开发阶段,如果想马上使用的话,请结合实际代码和注释来使用. 使用cmake编译:
1. 进入包含CMakeLists.txt文件的目录,终端输入`cmake .`命令;(如果没有安装cmake请先安装cmake)
2. 然后输入`make`,编译成功后该目录下会出现一个cluster的二进制文件,就可以运行看看效果了.
采用c++的原因有三点:1.其他语言基本都有大量聚类算法的实现,相比较c++的版本更少;2.c++语言的特性能一定程度地支持前面提到的目标;3.其他语言如python和js都能很容易地嵌入c++代码,可以方便地作为其他语言的服务提供者.暂时不会采用其他语言的实现.
目前处于开发阶段,所以请等到发布release版本时再使用.如果想马上使用,可以参考examples/example.cpp及其注释.
回答是,当然可以.可以发送邮件到roliygu@gmail.com或者github提供的其他方式联系我.