DBSCAN 的密度聚类思路,蛮适合那种形状不规则、还有点噪声的数据。你不用预先设定聚类个数,只要定个εMinPts就能搞定,挺适合初学者上手的。

Matlab 版本的实现比较清晰,变量名啥的都能看懂,逻辑也不绕。基本结构就是循环+判断,搞懂核心对象和边界点这两个概念就能顺着走下去了。

资源包叫密度聚类 20160407,里头还有 PPT,讲原理也讲应用场景,像是地理数据、图像、社交图谱这些都有提到,算是比较全面了。

还有一点挺好的,运行效果直接可视化,能看到聚类是怎么分的,这对理解DBSCAN有。代码里你只需要设定一下εMinPts,其余的交给算法来搞定,效率还不错。

如果你平时用 Matlab 做数据,这套代码可以直接拿来用;要是想看看其它语言的实现,也有PythonJavaJCuda版本可以参考,思路是一样的。

哦对了,如果你数据有点脏、有噪声,那 DBSCAN 还挺好用的,不容易被异常值带跑偏。