K均值聚类 (K-means 聚类)是无监督学习的一种算法,无监督学习的重要因素有:
- 数据特征( 图像中颜色、纹理或形状等特征、 听觉信息中旋律和音高等特征 、文本中单词出现频率等特征)
- 相似度函数 (定义一个相似度计算函数,基于所提取的特征来计算数据 之间的相似性)
K-means 聚类算法:
- 输入:?个数据(无任何标注信息)
- 输出:?个聚类结果
- 目的:将?个数据聚类到?个集合(也称为类簇)
算法描述:
- ?个?-维数据 :
- 两个?维数据之间的欧氏距离为:
(?? 值越小,表示 ?? 和 ?? 越相似;反之越不相似 )
- 聚类集合数目?
- 问题:如何将?个数据依据其相似度大小将它们分别聚类到?个集合,使得每个数据 仅属于一个聚类集合。
第一步:初始化聚类质心:
初始化?个聚类质心 ,每个聚类质心 ?? 所在集合记为
第二步:将每个待聚类数据放入唯一一个聚类集合中
计算待聚类数据 ?? 和质心 ?? 之间的 欧氏距离 , 将每个 ?? 放入与之距离最近聚类质心所在聚类集合中, 即
第三步:根据聚类结果、更新聚类质心
根据每个聚类集合中所包含的数据,更新该聚类集合质心 值,即:
第四步:算法循环迭代,直到满足条件
在新聚类质心基础上,根据欧氏距离大小,将每个待聚类数据放入唯一一个聚类集合中 ,根据新的聚类结果、更新聚类质心 。聚类迭代满足如下任意一个条件,则聚类停止: (1)已经达到了迭代次数上限 (2) 前后两次迭代中,聚类质心基本保持不变.
K均值聚类算法的另一个视角:最小化每个类簇的方差
欧氏距离与方差量纲相同
最小化每个类簇方差将使得最终聚类结果中每个聚类集合中所包含数据呈现出来差异性最小
K均值聚类算法的不足:
- 需要事先确定聚类数目,很多时候我们并不知道数据应被聚类的数目
- 需要初始化聚类质心,初始化聚类中心对聚类结果有较大的影响
- 算法是迭代执行,时间开销非常大
- 欧氏距离假设数据每个维度之间的重要性是一样的
具体代码可参考:https://blog.csdn.net/qq_39388410/article/details/78235882