做聚类分析,你是不是也遇到过:数据有异常值,K-Means 还能用吗?同心环、弯曲数据为什么总是聚不对?不知道到底应该分成几类怎么办? 这次把常用聚类算法系统整理了一遍:3大类,10种算法,全部配套 MATLAB 完整代码 + 可视化结果。
01|10种聚类算法,一次收齐
① K-Means 聚类:最经典的划分式聚类,质心迭代更新,适合快速理解聚类基本思想。
② K-Medoids 聚类:中心直接选取真实样本点,相比 K-Means 对异常值更加鲁棒。
③ FCM 模糊 C 均值聚类:一个样本不再被“硬塞”进某一类,而是拥有不同类别的隶属度,特别适合边界模糊的数据。
④ DBSCAN 聚类:不需要预先指定类别数,可以识别同心环、弯曲带状等非凸簇,还能自动发现噪声点。
⑤ DENCLUE 聚类:基于核密度估计和密度吸引子,从“数据密度”角度寻找潜在聚类结构。
⑥ GMM 高斯混合模型聚类:不仅看距离,还建模均值、协方差和混合权重,面对椭圆形、方向不同、尺度不同的簇更加灵活。
⑦ 谱聚类:把数据转换成图结构,通过拉普拉斯矩阵特征向量重新表示样本,对同心环、非线性可分结构尤其有意思。
⑧ 层次聚类:从一个个样本开始不断合并,最后形成一棵直观的聚类树状图。
⑨ CLIQUE 网格聚类:把空间划成网格,通过寻找稠密网格和连通区域发现聚类结构,还可以直接生成网格密度热力图。
⑩ AP 近邻传播聚类:不用提前指定 K,通过样本之间不断“传递消息”,自动寻找代表点并确定聚类结构。
02|真正有用的,不只是“把代码跑通”
很多网上的聚类代码最后只有一张:红点、蓝点、黄点……能运行,但距离论文出图还差很远。所以这一章除了聚类结果,还专门设计了不同的结果表达方式:
✅ 聚类散点分布
✅ 聚类中心 / Medoid / Exemplar 标记
✅ 各类别样本数量柱状图
✅ FCM 最大隶属度分布
✅ DBSCAN 邻域点数分布
✅ DENCLUE 核密度等高线
✅ GMM 概率密度等高线
✅ 谱聚类特征值与谱间隙
✅ 层次聚类树状图
✅ CLIQUE 网格密度热力图
同样是做聚类,结果图完全可以不止一张“彩色散点图”。尤其是做毕业论文、SCI论文或者算法对比实验时,怎么把结果展示出来,本身就是非常重要的一环。
03|一张“选算法”速查表
| 如果你的数据…… | 可以重点关注 |
| 类别比较规则、边界清晰 | K-Means |
| 存在异常值 | K-Medoids |
| 类别边界比较模糊 | FCM |
| 有噪声、形状不规则 | DBSCAN |
| 想从密度峰寻找结构 | DENCLUE |
| 簇呈椭圆形、方向不同 | GMM |
| 同心环、非线性结构 | 谱聚类 |
| 想观察聚类层级关系 | 层次聚类 |
| 想分析空间稠密区域 | CLIQUE |
| 不想提前指定类别数 | AP / DBSCAN |
最后
很多时候,收藏 10 篇零散教程,不如把 10 种算法真正整理成一套。算法原理 + MATLAB 实现 + 结果可视化,才是最适合科研复现的学习方式。
📌 如果你也正在做聚类分析,建议先收藏,后面写论文、做实验的时候大概率用得到。
需要本章 10 种聚类算法完整 MATLAB 源码,可后台回复:
聚类算法
获取代码
也欢迎转发给那个——
“不管什么数据都先跑一遍 K-Means” 的同学。😂