This is a simple implementation of the state-of-the-art clustering methods such as k-means. The implementations based on many papers that are mentioned below.
- Supported k-means algorithm with the following specific terms
- k-means++: see k-means++: the advantages of careful seeding
- Fast convergence with geometric prunning: see Making k-means even faster
- Supported CMake.
- Supported only L2 metric distance.
- Supported KD-tree with ANN search.
- Supported GNU C++ Compiler and clang compiler.
- An Unix or Windows(Cygwin not native Windows with an MSVC compiler) Operating System. Tested on Mac OS X 10.9 and Ubuntu 14.04.
- CMake 2.8 or newer. For UNIX users, check your CMake version in terminal by
cmake -version
. - An GNU C++ Compiler or clang compiler that support C++ 11.
- OpenCV 2.4.8 or newer. This library is used for testing only. Just for comparing the performance with our implementations.
We use CMake as the build system. On terminal,
$ git clone [email protected]:marker68/simple-cluster.git simple-cluster
$ cd ./simple-cluster
$ cmake -H. -Bbuild && cmake --build build -- -j3
This script will create the following files in your bin/
directory.
$ ls bin
CMakeFiles libgtest_main.a test_kdtree test_utilities
libgtest.a libsimplecluster.so test_kmeans
libgtest_main.a,libgtest.a
: Google Testing Framework's static library files. We are using Google Test for testing.libsimplecluster.{so,dylib,dll}
: dynamic library(shared library) files for SimpleCluster.test_utilities, test_kdtree, test_kmeans
: test programs. See their source code intest/
directory to know how to use this library.
This project uses Doxygen to generate its documentation. To generate the documentation:
$ cd ./doc
$ doxygen config.doxygen
The documentation files will be generated in HTML and LaTeX format.
- At version 1.0(2014/10/05):
- Supported k-means algorithm.
- Supported CMake.
- Supported only L2 metric distance.
- Supported KD-tree with ANN search.
- Supported GNU C++ Compiler and clang compiler.