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进行聚类计算
使用K-means进行聚类计算
案例分析
dbscan会剔除噪点,k-means会把任何点都归到了某一个类。
k-means 的中心点不是聚集区域的中心点,而是整个聚类的中心点;DBSCAN 无法找出中心点。
相比 k-means ,DBSCAN 不需要预先声明聚类数量。
DBSCAN 可以找出任何形状的聚类,甚至能找出一个聚类,k-means需要指定集类的个数。
要想找出聚集区域并给出准确的中心点,可以使用DBScan分析聚类个数和聚类包含的点,再通过k-means将每个聚类所包含的点计算出中心点。
蓝色为聚类1,黑色为聚类2,灰色为噪点。
具体算法的实现代码网上有很多介绍,可以参考。