I wrote this code as part of research described in the paper Consensus Clustering Algorithms: Comparison & Refinement (Andrey Goder & Vladimir Filkov).
I haven't updated it since it was originally written in 2007, apart from ensuring it compiles. No guarantees.
Included are files that implement the following:
- A SetPartition class.
- A SetPartitionVector class that stores an arbitrary amount of SetPartitions and can generate them from a file, by choosing randomly, or by creating "noisy partitions".
- A Timer class allowing for timing of performance of algorithms
- The Mersenne Twister pseudo-random number generator, for generating random set partitions and for the randomized algorithms
- A Matrix class, used in some of the algorithms.
- A suite of consensus clustering algorithms (described in the paper): - BestOfK - BestOneElementMove - SimulatedAnnealingOEM - MajorityRule - CCPivot - CCAverageLink
- A refined consensus clustering algorithm using AverageLink clustering that breaks up a set of clustering into smaller groups that will have better consenses.
The Main.cpp file includes examples showing some of these uses.