一、概述
K-means算法是集简单和经典于一身的基于距离的聚类算法采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为类簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。
二、k-means算法流程
结合代码具体分析流程:
1. 准备数据,对数据进行可视化显示
2.定义距离函数,聚类中心更新函数,实现k-means
- 计算聚类中心与样本之间的距离函数
- 根据距离记录列表record更新聚类中心
- 聚类算法指定运行n个epoch或者聚类中心不变则停止
- 得到聚类中心结果
- 可视化查看结果
代码传送门**(含tensorflow实现版)**
三、缺点
- 计算量大,样本量大时非常耗用计算资源;
- 不好确定K值,只能多次尝试,根据肘部法则去确定一个合适的K值;
- 不一定每次都能聚类好。可以记录一个距离的损失值,选择最后最小的损失值作为聚类中心;
- 不能聚类密度类数据,如两个环状的数据,这时候使用K-means将会失效。可以选择使用DBSCAN算法聚类。