前文为JoyT的科研之旅第一周——科研工具学习及论文阅读收获-CSDN博客

目录

一、DBSCAN 介绍

1. 基本原理

二、代码分析

1. 代码中的 DBSCAN 工作流程

2. 结论


一、DBSCAN 介绍

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,它能够识别出任意形状的簇,并有效地处理噪声点DBSCAN 不需要事先指定聚类的数量,这是其与许多其他聚类算法(如 K-means)的一个主要区别。 

1. 基本原理

  • 核心点:如果一个点的 ϵ 邻域内至少有 min_samples 个点(包括点本身),则此点被认为是一个核心点

  • 边界点和噪声点:距离核心点不远(在 ϵ 范围内),但自身不满足核心点条件的点被视为边界点。不属于核心点或边界点的点被视为噪声点。

  • 聚类形成:通过连接在 ϵ 范围内互相可达的核心点,形成聚类。边界点会被归入其所连接的核心点所在的聚类,而噪声点不被归入任何聚类


二、代码分析

取前文代码的DBSCAN部分进行介绍:

# DBSCAN去噪
epsilon = 0.3  # DBSCAN的半径参数
min_samples = 3  # DBSCAN的最小样本数参数(MinPts)
dbscan = DBSCAN(eps=epsilon, min_samples=min_samples)
clusters = dbscan.fit_predict(np.column_stack((filtered_longitudes, filtered_latitudes)))

# 去除噪声点
denoised_longitudes = filtered_longitudes[clusters != -1]
denoised_latitudes = filtered_latitudes[clusters != -1]
denoised_timestamps = filtered_timestamps[clusters != -1]

1. 代码中的 DBSCAN 工作流程

参数设置(与前文呼应,加入KDC能够使得参数个数为1)

  • epsiloneps): 定义了邻域的半径大小。在这个范围内的点被认为是邻近的。
  • min_samples: 定义了一个点成为核心点所需的最小邻居数目。

DBSCAN 实例化和拟合

  • 创建 DBSCAN 对象,使用上述参数。
  • 该对象调用 fit_predict 方法对数据进行聚类,数据由经纬度构成(filtered_longitudes, filtered_latitudes)。

噪声点的处理

  • fit_predict 方法返回的 clusters 数组为每个点指定了一个聚类标签。噪声点被标记为 -1
  • 通过检查 clusters != -1 来筛选出非噪声点,即那些属于某个聚类的点。

结果可视化:在散点图中绘制去噪后的数据。这些点是 DBSCAN 确定为属于某个聚类的点。


2. 结论

在代码中,DBSCAN 被用来识别和移除噪声点,只保留那些被归为某个聚类的点。这种方法特别适合于处理包含噪声和具有不规则形状簇的数据,是一种强大且灵活的聚类工具。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐