一、算法概述
K-means聚类算法是一种基本的已知聚类类别数的划分算法。它以距离作为标准,认为两个对象的距离越近,它们的相似度越高。它的输入是数据集和类别数,聚类的结果是划分为k类的k个数据集合。
基本思想:开始随机给定k个聚类中心,按照最邻近的原则把需要分类样本点分到与其最近的类中。然后按平均法重新计算各个类的质心(最初的聚类点),从而确定新的聚类中心。一直迭代,直到相邻两次的聚类中心没有任何变化。
1、步骤:
(1)为待聚类的点寻找聚类中心
(2)计算每个点到聚类中心的距离,将每个点聚类到离改点最近的聚类中
(3)计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心
重复执行第二、第三步,直到相邻两次的聚类中心没有变化
2、伪代码:
创建k个点作为起始质心
当任意一个点的数据集分配结果发生改变时
对数据集中的每个数据点
对每个质心
计算质心与数据点之间的距离
将数据点分配到距离其最近的数据集合
对每一个数据集,计算集合中所有点的均值并将均值作为质心
二、代码实现
%随机获取150个点
X = [randn(50,2)+ones(50,2);randn(50,2)-ones(50,2)