**
3.DBSCAN算法
**
基于密度空间的聚类算法 不需要聚类的数量 而是基于数据推测聚类的数目 可以对任意形状都能产生聚类
概念:epsion-neighborhood(e-nbhd) 密度空间 在半径为e且还有若干个点的nbhd,密度等于包含点的个数/空间大小
该算法首先要确定两个参数:
epsilon 在一个点周围邻近区域的半径;
minpts 这个邻近区域至少应该包含的点个数
根据这两个参数可以划分样本中的点为三类:
核心点 如果一个点在其eps半径内有超过minpts数目的点
边界点 如果一个点在半径eps内含有的数量小于minpts但是他说落在核心点的邻域内
噪音点即离群点 既不是核心点也不是边缘点
直接密度可达:如果点p在核心点q的eps邻域内,则认为p从q出发是直接可达的(在一个半径圈内)
密度可达:如果存在数据对象链p1、p2…pn、pn+1是从pi关于eps和minpts直接密度可达的,则认为pn是从数据对象p1关于epsminpts密度可达的(即一圈套一圈可以到达的)注意方向为单向
密度相连:对于对象p和q,如果存在核心对象样本o,shidepheq都可以从o密度可达,那么则成为p和q密度相连,具有对称性理解如图
直接密度可达与密度可达
DBSCAN算法步骤:已知到eps和minpts
1.任意选择一个点,看他的周围距离小于等于eps所有的点是否大于minpts,是,则在该点建立一个类,否则设定为噪音点。
2.遍历其他点,直到建立一个类,把直接密度可达的点(即这个点的半径区域内的点)加到类中,然后把密度可达的点也加进来。如果标记为噪音点的也加进来,则修改状态为边缘点
3.重复上述步骤 直到所有的点满足到类中(核心点或边缘点)或者是噪音点
参考:https://blog.csdn.net/vainfanfan/article/details/83116589 https://blog.csdn.net/dsdaasaaa/article/details/94590159