结合 DBSCAN 示例代码介绍 DBSCAN

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

DBSCAN 介绍

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

DBSCAN 基本原理

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

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

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


代码分析

取前文代码的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]

代码中的 DBSCAN 工作流程

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

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

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

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

    • 在散点图中绘制去噪后的数据。这些点是 DBSCAN 确定为属于某个聚类的点。

结论

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

你可能感兴趣的:(综述写作,科研,机器学习,支持向量机,算法,机器学习)