前言
k-means算法是一种基于样本间相似性度量的间接聚类方法,属于非监督学习方法。通过指定k值将数据自动迭代分成k组,实现数据分类,可对分类的数据进行进一步的研究。
算法原理
1.在数据中随机选取k个数据作为聚类中心
2.计算其他数据到k个聚类中心的距离(这个距离可以是欧氏距离或者其他距离)
3.根据到聚类中心的最小距离将数据分为k类
4.更新聚类中心的坐标(对分类好的数据求均值)
5.回到2重新进行分类,(进行多次迭代更新,使聚类中心趋于稳定,迭代次数可根据需要自由设定)
Matlab仿真图
来看看matlab仿真结果,先随机撒点
kmeans算法进行分类,k=4
数据成功分为4组,由于这里用的均匀分布的随机数,数据也均匀被分为k组。
算法实现
//Kmeans算法
//k:聚类数量
//points:坐标数据
//iteration:迭代计算次数
//返回:聚类中心
public static Point[] Kmeans(int k, ArrayList<Point> points,int iteration){
if (points.size()<k) return null;
//聚类中心
Point[] centre=new Point[k];
for(int i=0