算法源代码下载地址
Algorithm.rar
是用Eclipse调试过的,直接用Eclipse打开工程文件即可运行。主方法在ca.pfv.spmf.test包内的MainTestKMeans_saveTiFile.java中,工程文件内还包括所有Spmf实现的聚类、分类、关联规则等相关算法。算法步骤
(1)选择聚类的数量k,及决定生成类别的数量k
(2)随机产生k个类,并指定每个类的中心center
(3)分别计算每个点到这k个类的center的距离,把该点分配到离它最近的类
(4)重新计算每个类的的中心点
(5)重复(3)、(4)步,直到没有点被重新分类算法分析
(1) spmf实现的kmeans算法,关键在与实现数据的存储上。输入数据格式如下:
1 2 3 4
1 6 8 8
1 2 3 3
2 4 5 5
4 7 8 7
7 6 8 9
4 4 3 3
2 2 5 5
7 5 5 5
5 6 8 9
即每一行数据代表一个点,每一个点含有4个值,是一个典型的高维数据。算法实现的目标是将这10个4维点分成3(k=3)个类型,每一个类型定义变量cluster存储,类集合用定义的clusters变量存储。每个点用vector代表,而所有的点存储在List中,用私有变量vectors代表。而vector是spmf自定义的doubleAllary数据结构,该结构实质是一个double型的4维数组。
- 源码解读:
List<ClusterWithMean> applyKMeans(int k, DistanceFunction distanceFunction,
List<DoubleArray> vectors, double minValue, double maxValue,
int vectorsSize) {
List<ClusterWithMean> newClus