dbscan算法python实现_无监督聚类算法 DBSCAN 原理及 Python 代码实现

DBSCAN是一种密度聚类算法,基于密度可达关系找出密度相连样本集合。本文介绍了DBSCAN的基本概念,如$epsilon$-领域和核心对象,以及Python实现,包括算法流程和测试。该算法无需预设类别数量,能处理非凸形状和噪声数据,但对非均匀样本集可能效果不佳。
摘要由CSDN通过智能技术生成

定义

DBSCAN 全称为 Density-Based Spatial Clustering of Applications with Noise,一种密度聚类算法。

$\epsilon-领域$:指以某个对象为中心,$\epsilon$ 为半径的空间。其中 $\epsilon>0$ 为半径值。

$min\_pts$:密度阈值,用于定义核心对象。

核心对象:某个对象的 $\epsilon-领域$ 中对象数量至少包含 $min\_pts$ 个对象。

密度直达:在某个对象 $x$ 的 $\epsilon-领域$ 任意对象,为 $x$ 的密度直达对象。

密度可达:若存在序列 $x_1, x_2, .., x_n$,其中 $x_i 为 x_{i-1}$ 的密度直达对象,则称 $x_1$ 与 $x_n$ 密度可达。

密度相连:若对象 $x_1, x_2$ 均由对象 $x_k$ 密度可达,则称 $x_1, x_2$ 密度相连。

目标

基于密度可达关系,分别找出所有密度相连样本集合。

核心思想

输入:样本、$eps$(半径)、$min\_pts$

遍历样本,找出所有核心对象

任意选择一个核心对象,找到该对象所有密度可达的对象,并将其归为一类

从剩余的核心对象中移除以归类的对象

重复步骤 2 和步骤 3 ,直到所有核心对象都被归类

算法实现

需要使用到的库:numpy

定义欧式距离函数,公式为 $ d(a, b) = \sqrt{ \sum_{i=1}^{n} (a_i - b_i)^2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值