DBSCAN密度聚类介绍 样本点 样本集合 半径 邻域 核心对象 边界点 密度直达 密度可达 密度相连

DBSCAN密度聚类介绍 样本点 样本集合 半径 邻域 核心对象 边界点 密度直达 密度可达 密度相连

简介

  • DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种基于密度的空间聚类算法,用于将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇。该算法将簇定义为密度相连的点的最大集合,利用基于密度的聚类的概念,即要求聚类空间中的一定区域内所包含对象(点或其他空间对象)的数目不小于某一给定阈值。

概念定义

  • xi:为每一个样本点
    在这里插入图片描述

  • D:样本集合,包含所有样本点
    在这里插入图片描述

  • 半径:以样本点为中心画圆的半径

  • 邻域:对于给定的对象,其ε-邻域是指与该对象距离不超过ε的所有对象的集合。

  • 核心对象:如果一个对象的邻域(通常称为ε-邻域)内至少有MinPts个对象(包括该对象本身),则该对象被称为核心对象。
    在这里插入图片描述

  • 密度直达:样对于样本集合D中的两个点p和q,如果存在一个点的序列p1, p2, …, pn,其中p1 = p, pn = q,并且对于序列中的任意点pi (1 ≤ i < n),pi+1都是从pi密度可达的,那么我们说点q是从点p密度可达的。

  • 密度可达:如果你可以从点p通过一系列的核心对象到达点q(即沿着由核心对象组成的路径走),那么点q就是从点p密度可达的。这种关系并不是对称的,也就是说,即使q从p密度可达,也不意味着p从q密度可达。

  • 密度相连在DBSCAN中,如果点q从点p密度可达,并且点s也从点p密度可达,那么点q和点s就被认为是密度相连的。这种关系是对称的,即如果q和s是密度相连的,那么s和q也是密度相连的。

原理

  • 首先,选择一个核心对象。然后对核心点的邻域内的每个点进行评估,以确定它是否在邻域内有n个对象。如果该点满足标准,它将成为另一个核心点,集群将扩展。如果一个点不满足标准,它成为边界点。随着过程的继续,算法开始发展成为核心点“a”是“b”的邻居,而“b”又是“c”的邻居,以此类推。当集群被边界点包围时,这个聚类簇已经搜索完全,因为在距离内没有更多的点。选择一个新的随机点,并重复该过程以识别下一个簇。
  • 他就和我们遍历二叉树或者N叉树一样,把所有的点都进行深度遍历,把符合要求的点添加到当前的簇内,找不到新的边界点就去接着遍历整个点集合D。

DBSCAN的优点

  • 不需要像KMeans那样预先确定集群的数量
  • 对异常值不敏感
  • 能将高密度数据分离成小集群
  • 可以聚类非线性关系(聚类为任意形状)

DBSCAN的缺点

  • 很难在不同密度的数据中识别集群
  • 难以聚类高维数据
  • 对极小点的参数非常敏感

小尝试

from sklearn.cluster import DBSCAN
import numpy as np

# 输入数据
X = np.array([(1,1), (1,2), (2,1), (8,8), (8,9), (9,8), (15,15)])

# 创建DBSCAN对象,设置半径和最小样本数
dbscan = DBSCAN(eps=2, min_samples=3)

# 进行聚类
labels = dbscan.fit_predict(X)

# 输出聚类结果
for i in range(max(labels)+1):
    print(f"Cluster {i+1}: {list(X[labels==i])}")
print(f"Noise: {list(X[labels==-1])}")

  • 结果为
Cluster 1: [array([1, 1]), array([1, 2]), array([2, 1])]
Cluster 2: [array([8, 8]), array([8, 9]), array([9, 8])]
Noise: [array([15, 15])]
  • 其中聚集为两个簇Cluster 1和Cluster 2和一个干扰点

制作不易,感谢三连,谢谢啦

  • 30
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值