1.DBSCAN算法原理
具有噪声的基于密度的聚类算法DBSCAN(Density-Based Spatial Clustering of Applicationswith Noise)是1996年提出的一种基于密度空间的数据聚类算法。该算法将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。
该算法将具有足够密度的点作为聚类中心,即核心点,不断对区域进行扩展。该算法利用基于密度的聚类的概念,即要求聚类空间的一定区域内所包含对象(点或其他空间对象)的数目不小于某一给定阈值。
DBSCAN算法的实现过程如下:
(1)通过检查数据集中每点的Eps邻域(半径Eps内的邻域)来搜索簇,如果点p的Eps邻域包含的点多于MinPts个,则创建一个以p为核心对象的簇。
(2)迭代地聚集从这些核心对象直接密度可达的对象,这个过程可能涉及一些密度可达簇的合并(直接密度可达是指:给定一个对象集合D,如果对象p在对象q的Eps邻域内,而q是一个核心对象,则称对象p为对象q直接密度可达的对象)。
(3)当没有新的点添加到任何簇时,该过程结束。
其中,Eps和MinPts即需要指定的参数。
2.DBSCAN算法案例
扩展库sklearn.cluster实现了DBSCAN聚类算法,其构造方法的语法格式如下:
def__init__(self,eps=0.5,min_samples=5,metric='euclidean',metric_params=None,algorithm='auto',leaf_size=30,p=None,n_jobs=1)(www.xing528.com)
常用参数如表4-12所示,常用方法如表4-13所示。
表4-12 DBSCAN类常用参数
表4-13 DBSCAN类常用方法
我们选用iris数据库(鸢尾花数据集)进行DBSCAN聚类算法的研究,提取iris中的4个属性值,采用sklearn.cluster中的DBSCAN方法构造聚类器,邻域参数设置(0.4,9)。采用鸢尾花数据集进行DBSCAN聚类模型训练以及对最终聚类结果的展示,代码如下所示。
例4_7_DBSCAN.py
运行结果如图4-14所示。
图4-14 DBSCAN聚类运行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。