目录
介绍
DBSCAN模型
开始
聚类算法
参数估计
结论与分析
可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表。
介绍基于密度的噪声应用空间聚类(DBSCAN)是一种基于密度的聚类算法。与其他聚类算法不同,DBSCAN将最大密度可到达样本集视为聚类。KMeans缺乏对非球形数据进行聚类的能力,而DBSCAN可以对任何形状的数据进行聚类。
DBSCAN模型 开始- Ε邻域:来自对象的半径为ε的对象。
- 核心要点:如果一个样本在ε-邻居内具有超过指定数量的点(m),则该样本是核心点。
- 直接密度可达:对于样本集合D,如果样本点q在p的Ε邻域内,并且p为核心对象,那么对象q从对象p直接密度可达。
- 密度可达:如果存在对象链p1,...,pn,对象q可以从p密度到达,其中p1 = p,pn = q使得pi + 1可以直接密度可达pi,对于所有1 0:
Q = core_neighbor[0]
del core_neighbor[0]
if Q in initial_centers.keys():
diff = [sample for sample in initial_centers[Q] if sample in unvisited]
core_neighbor.extend(diff)
unvisited = [sample for sample in unvisited if sample not in diff]
k += 1
label[k] = [val for val in visited if val not in unvisited]
for index in label[k]:
if index in centers.keys():
del centers[index]
参数估计
DBSCAN算法需要2个参数ε,它们指定了彼此之间的接近点应该如何被视为集群的一部分;而参数m,它指定一个点应该包含在一个簇中的邻居数量。以wiki为例,我们计算在同一分区内从每个点到最近邻居的距离,如下所示,我们可以很容易地确定ε= 22。
对于参数m,我们计算核心点的ε邻域内有多少样本,如下所示。我们选择m = 129,因为它是第一个谷底。
结论与分析DBSCAN能够聚类非球形数据,但不能反映高维数据。当密度分布不均匀时,聚类性能不太好。KMeans和DBSCAN之间的聚类性能如下所示。很容易发现DBSCAN具有比KMeans更好的聚类性能。
可以在MachineLearning中找到本文中的相关代码和数据集。
有兴趣的小伙伴可以查看上一篇。
原文地址:https://www.codeproject.com/Articles/5129186/Step-by-Step-Guide-to-Implement-Machine-Learning-8