DBSCAN聚类
(1)DBSCAN简介
DBSCAN是一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类。
DBSCAN中的几个定义:
Ε邻域:给定对象半径为Ε内的区域称为该对象的Ε邻域;
核心对象:如果给定对象Ε邻域内的样本点数大于等于min_samples,则称该对象为核心对象;
直接密度可达:对于样本集合D,如果样本点q在p的Ε邻域内,并且p为核心对象,那么对象q从对象p直接密度可达。
密度可达:对于样本集合D,给定一串样本点p1,p2….pn,p= p1,q= pn,假如对象pi从pi-1直接密度可达,那么对象q从对象p密度可达。
密度相连:存在样本集合D中的一点o,如果对象o到对象p和对象q都是密度可达的,那么p和q密度相联。
DBSCAN中两个重要参数eps ,min_samples
(1)eps:越大类别数越少——参数越大的话,多个簇和大部分对象会归并到同一个簇中
(2)需要对eps和min_samples手动设置,eps默认值是0.5,表示的是半径
如果 附近点的数量 ≥min_samples,则当前点与其附近点形成一个簇,并且出发点被标记为已访问(visited),如果 附近点的数量 <min_samples,则该点暂时被标记作为噪声点。
(3)扫描半径 (eps)和最小包含点数(min_samples), 给定点在邻域内成为核心对象的最小邻域点数:min_samples
(4)min_samples的选取有一个指导性的原则(a rule of thumb),min_samples ≥dim+1,其中dim表示待聚类数据的维度。min_samples设置为1是不合理的,因为设置为1,则每个独立点都是一个簇,min_samples≤2时,与层次距离最近邻域结果相同,因此,min_samples必须选择大于等于3的值。若该值选取过小,则稀疏簇中结果由于密度小于min_samples,从而被认为是边界点儿不被用于在类的进一步扩展;若该值过大,则密度较大的两个邻近簇可能被合并为同一簇。因此,该值是否设置适当会对聚类结果造成较大影响,如果min_samples不变,Eps取得值过大,会导致大多数点都聚到同一个簇中,Eps过小,会导致一个簇的分裂;如果Eps不变,min_samples的值取得过大,会导致同一个簇中点被标记为离群点,min_samples过小,会导致发现大量的核心点。
(2)实现步骤
导入使用的模块和库
将样本点设为1000个, 参数设置为noise=0.1,用datasets.make_blobs函数生成