DBSCAN算法
一、基本概念
(1)核心对象:若某个点的密度达到算法设定的阈值则其为核心点(即r邻域内点的数量不小于minPts)
(2)ϵ-邻域的距离值:设定的半径r
(3)直接密度可达:若某点p在点q的r邻域内,且q是核心点,则p-q直接密度可达
(4)密度可达:若有一个点的序列q0、q1、...qk,对任意qi-qi-1是直接密度可达的,则称从q0到qk密度可达,这实际上是直接密度可达的“传播”。
(5)密度相连:若从某核心点p出发,点q和点k都是密度可达的吗,则称点q和点k是密度可连的。
(6)边界点:属于某一类的非核心点,不能发展下线了
(7)噪声点:不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的
二、算法工作流程:
1、 标记所有对象为 unvisited; 2、 Do 3、 随机选择一个unvisited对象p; 4、 标记p为visited; 5、 If p的ϵ-领域至少有MinPts个对象: 6、 创建一个新簇C,并把p添加到C 7、 令N为p的ϵ-领域中的对象集合 8、 For N中每个点p': 9、 If p'是unvisited: 10、 标记p'为visited 11、 If p'的ϵ-领域至少有MinPts个对象,把这些对象添加到N 12、 如果p'还不是任何簇的成员,把p'添加到C 13、 End for 14、 输出C 15、Else 标记p为噪声 16、Until没有标记为unvisited的对象