使用DBScan + Kmeans计算区域集聚和中心点

DBSCAN,英文全写为Density-based spatial clustering of applications with noise ,是在 1996 年由Martin Ester, Hans-Peter Kriegel, Jörg Sander 及 Xiaowei Xu 提出的聚类分析算法, 这个算法是以密度为本的:给定某空间里的一个点集合,这算法能把附近的点分成一组(有很多相邻点的点),并标记出位于低密度区域的局外点(最接近它的点也十分远).

k-平均算法(英文:k-means clustering)源于信号处理中的一种向量量化方法,现在则更多地作为一种聚类分析方法流行于数据挖掘领域。k-平均聚类的目的是:把{\displaystyle n}个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。这个问题将归结为一个把数据空间划分为Voronoi cells的问题。

使用DBScan + Kmeans计算区域集聚和中心点_第1张图片

使用DBScan进行聚类计算

使用DBScan + Kmeans计算区域集聚和中心点_第2张图片

使用K-means进行聚类计算

案例分析

dbscan会剔除噪点,k-means会把任何点都归到了某一个类。

k-means 的中心点不是聚集区域的中心点,而是整个聚类的中心点;DBSCAN 无法找出中心点。

相比 k-means ,DBSCAN 不需要预先声明聚类数量。

DBSCAN 可以找出任何形状的聚类,甚至能找出一个聚类,k-means需要指定集类的个数。

 

要想找出聚集区域并给出准确的中心点,可以使用DBScan分析聚类个数和聚类包含的点,再通过k-means将每个聚类所包含的点计算出中心点。

 

使用DBScan + Kmeans计算区域集聚和中心点_第3张图片

蓝色为聚类1,黑色为聚类2,灰色为噪点。

具体算法的实现代码网上有很多介绍,可以参考。

你可能感兴趣的:(我的原创)