引言
在机器学习的聚类任务中,K-means因其简单高效广为人知,但它有一个致命缺陷——假设簇是球形且密度均匀,且需要预先指定簇数。当数据存在任意形状的簇、噪声点或密度差异较大时,K-means的表现往往不尽如人意。这时候,DBSCAN(Density-Based Spatial Clustering of Applications with Noise) 作为基于密度的聚类算法,凭借其无需预设簇数、能识别噪声、处理任意形状簇的特性,成为工业界和学术界的神器
本文将从原理到代码,带你彻底搞懂DBSCAN,并通过实战案例掌握其核心技巧。
一、DBSCAN核心概念:用“密度”定义簇
要理解DBSCAN,首先需要明确5个核心概念:
1. ε邻域(ε-Neighborhood)
对于数据点 ppp,其ε邻域是指所有与 ppp 的距离不超过 ε\varepsilonε 的点的集合,数学上表示为:
Nε(p)={
q∈D∣distance(p,q)≤ε}N_\varepsilon(p) = \{ q \in D \mid \text{distance}(p, q) \leq \varepsilon \}Nε(p)={
q∈D∣distance(p,q)≤ε}
其中 DDD 是数据集,distance\text{distance}distance 常用欧氏距离(连续数据)或曼哈顿距离(高维稀疏数据)。
2. 核心对象(Core Object)
如果数据点 ppp 的ε邻域内至少包含 min_samples\text{min\_samples}min_samples 个点(包括 ppp 自己),则 ppp 是一个核心对象。
换句话说,核心对象是“密度足够高”的点,是簇形成的基础。
3. 直接密度可达(Directly Density-Reachable)
如果点 qqq 位于核心对象 ppp

最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



