聚类 —— DBSCAN

参考维基百科

1. 名词解释

  • DBSCAN:Density Based Spatial Clustering Application with Noise
  • 核心对象
    在这里插入图片描述
  • 直接密度达
    在这里插入图片描述在这里插入图片描述
  • 密度可达:

A point q is reachable from p if there is a path p1, …, pn with p1 = p and pn = q, where each pi+1 is directly reachable from pi. Note that this implies that all points on the path must be core points, with the possible exception of q.

  • 密度相连
  • 噪声
    在这里插入图片描述

2. DBSCAN算法思想

密度可达关系导出的最大密度相连的样本集合,即为我们最终聚类的一个类别,或者说一个簇。
那么怎么才能找到这样的簇样本集合呢?DBSCAN使用的方法很简单,它任意选择一个没有类别的核心对象作为种子,然后找到所有这个核心对象能够密度可达的样本集合,即为一个聚类簇。接着继续选择另一个没有类别的核心对象去寻找密度可达的样本集合,这样就得到另一个聚类簇。一直运行到所有核心对象都有类别为止。
在这里插入图片描述

3. DBSCAN聚类算法步骤

在这里插入图片描述

4 DBSCAN聚类算法优缺点

在这里插入图片描述

6 DensityPeak 密度最大值聚类

  • 局部密度 ρ i \rho_{i} ρi
  • 高局部密度点距离 δ i \delta_{i} δi
  • 簇心
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### 使用DBSCAN算法进行点云数据聚类 #### 数据准备 对于点云数据而言,每个点通常由三维坐标\[x, y, z\]来描述。这些坐标的集合构成了待处理的点云数据集,在应用DBSCAN之前需要准备好这样的数据结构[^2]。 #### 调用DBSCAN函数 当点云数据已经就绪之后,下一步就是调用DBSCAN函数来进行实际的聚类操作。这涉及到设置两个重要参数:邻域半径(eps)以及最小邻域内的点数量阈值(min_samples),这两个参数决定了哪些点会被认为是在同一个簇内。 #### 获取并解释结果 执行完上述过程后,将会得到两部分的结果——`clusters`代表各个簇的信息;而`noise`则包含了那些被判定为噪声点的数据项。依据所获得的`clusters`信息,可以进一步开展诸如可视化展示或者更深入的数据分析工作。 #### 实现示例 下面给出一段利用Python库Open3D实现DBSCAN点云聚类的例子: ```python import open3d as o3d import numpy as np # 加载点云文件 pcd = o3d.io.read_point_cloud("path_to_your_pcd_file.ply") # 将点云转换成numpy数组形式以便后续计算 points = np.asarray(pcd.points) # 定义DBSCAN模型及其参数 epsilon = 0.5 # 邻域距离阈值 min_points = 10 # 最少点数目 labels = np.array(pcd.cluster_dbscan(eps=epsilon, min_points=min_points)) max_label = labels.max() print(f"point cloud has {max_label + 1} clusters") colors = plt.get_cmap("tab20")(labels / (max_label if max_label > 0 else 1)) colors[labels < 0] = 0 # 设置噪声点颜色为黑色 pcd.colors = o3d.utility.Vector3dVector(colors[:, :3]) o3d.visualization.draw_geometries([pcd], window_name="DBSCAN Clusters", width=800, height=600) ``` 此段代码展示了如何读取外部存储的PLY格式点云文件,并对其进行基于密度的空间聚类(DBSCAN)[^4]。通过调整`epsilon`和`min_points`变量可改变最终形成的簇的数量与大小特征。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值