Python 实现DBSCAN 算法

DBSCAN是一种基于密度的聚类算法,适用于非球形聚类。该算法通过邻域参数和MinPts将数据点分类为核心点、边界点和噪音点。核心点是半径内有超过MinPts个点的点,边界点在核心点的邻域内,而噪音点不属于这两类。DBSCAN通过密度可达和密度相连的概念形成聚类簇。算法流程包括确定核心对象,然后以密度可达关系生成聚类簇。合适的邻域参数设定对于获得有效聚类结果至关重要。
摘要由CSDN通过智能技术生成

 一、基于密度的聚类

K-Means 算法、K-Means++ 算法和Mean Shift 算法都是基于距离的聚类算法,当数据集中的聚类结果是球状结构时,能够得到比较好的结果,但当数据集中的聚类结果是非球状的结构时,基于距离的聚类算法的聚类效果并不好。球状结构的聚类如我们前面讲的,非球类结构的聚类如下图所示:

基于距离的三种聚类算法其解得的聚类结果都不对,在上图中,数据的分布呈现明显的密度趋势,所以基于密度的聚类算法 DBSCAN 被提出。

二、DBSCAN 算法原理

1.基本概念

DBSCAN 是一种典型的基于密度的聚类算法,它有两个最基本的邻域参数——\varepsilon邻域、MinPts:

  • \varepsilon邻域:在数据集 D 中与样本点 xi 的距离不大于 \varepsilon的样本,即N_{\varepsilon }(x_{i})=\left \{ x_{j} \in D|dist(x_{i},x_{j})\leq \varepsilon \right \},如下图所示,x* 不在样本点xi 的\varepsilon邻域内,xi 的密度可由 xi 的\varepsilon 邻域内的点数来估计。

  • MinPts:在样本xi的\varepsilon邻域内的最少样本点的数目

基于邻域参数\varepsilon邻域和MinPts,在DBSCAN算法中将数据点分为以下三类:

 

  • 核心点:半径\varepsilon内含有超过MinPts数目的点;
  • 边界点:在半径\varepsilon内点的数量小于MinPts,但是落在核心点的邻域内;
  • 噪音点:既不是核心点也不是边界点的点。

在上图中,设置MinPts的值为10,对应的x1的\varepsilon邻域中有11个样本点,大于MinPts,则x1为核心点。x2的\varepsilon邻域中有6个样本点,小于MinPts且在x1的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值