当前位置: 首页 > news >正文

【第二章:机器学习与神经网络概述】01.聚类算法理论与实践-(3)DBSCAN 聚类算法

第二章: 机器学习与神经网络概述

第一部分:聚类算法理论与实践

第二节:DBSCAN 聚类算法(Density-Based Spatial Clustering of Applications with Noise)

内容:密度聚类原理、参数选择及边界点处理。


一、DBSCAN 简介

DBSCAN 是一种基于密度的聚类算法,不依赖于聚类数量的预设,能自动识别任意形状的簇,并能识别离群点(噪声)。它是处理噪声数据和不规则聚类结构的经典算法。


二、核心概念
  1. ε 邻域(ε-neighborhood)
    给定一个样本点 pp,以半径 ε 为范围画一个圆(或高维球体),该区域内的所有点称为 p 的 ε 邻域。

  2. 核心点(Core Point)
    如果某点的 ε 邻域内至少包含 MinPts 个点(包括它自身),它就是核心点

  3. 密度直达(Directly Density-Reachable)
    如果点 q 在点 p 的 ε 邻域内,且 p 是核心点,则称 q 密度直达于 p。

  4. 密度可达(Density-Reachable)
    若存在一个点序列 p_1, p_2, ..., p_n,使得 p_1 = p, p_n = q,且序列中的点两两密度直达,则称 q 密度可达于 p。

  5. 边界点(Border Point)
    自身不是核心点,但在某个核心点的 ε 邻域内的点。

  6. 噪声点(Noise Point)
    既不是核心点,也不是任何核心点 ε 邻域内的点。


三、DBSCAN 聚类步骤
输入:数据集 D,参数 ε 和 MinPts
输出:簇集合与噪声点1. 对每个未访问的点 p:a. 标记为已访问;b. 获取 p 的 ε 邻域 N;c. 若 N 中点数 < MinPts,则标记为噪声;d. 否则,以 p 为核心点扩展新簇:- 将 N 中所有点加入簇;- 对每个新加入点 q:- 若 q 未访问,标记为已访问;- 若 q 的 ε 邻域中点数 ≥ MinPts,则将其邻域也加入当前簇。

四、参数选择
  1. ε(邻域半径)

    • 太小:大部分点被当作噪声;

    • 太大:不同簇可能合并。

    • 通常使用 k-距离图 寻找拐点作为 ε 的经验值。

  2. MinPts(最小密度)

    • 一般经验:MinPts ≥ 数据维度数 + 1;

    • 通常在 4~10 之间调试。


五、优缺点
优点缺点
自动决定簇数量对参数 ε 和 MinPts 较敏感
可识别任意形状簇高维数据中距离不再可靠(“维数灾难”)
可识别噪声点核心点密度不均时效果差

六、示例代码(使用 sklearn
from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt# 生成数据
X, _ = make_moons(n_samples=300, noise=0.05)# DBSCAN 聚类
db = DBSCAN(eps=0.2, min_samples=5)
labels = db.fit_predict(X)# 可视化
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='rainbow')
plt.title("DBSCAN Clustering")
plt.show()

 


七、DBSCAN 关键图示建议
  1. ε 邻域示意图:展示核心点、边界点、噪声点的空间分布。

  2. 聚类结果图:展示任意形状聚类结果。

  3. k-距离图:帮助选取 ε。

  4. 算法流程图:以核心点扩展簇的过程。


总结
  • DBSCAN 是一种无需指定簇数、可识别任意形状聚类结构的密度聚类算法;

  • 关键在于 ε 与 MinPts 参数选择;

  • 与 K-means 相比,更适合有噪声、不规则形状的实际场景。

http://www.lryc.cn/news/571590.html

相关文章:

  • python学智能算法(十二)|机器学习朴素贝叶斯方法初步-拉普拉斯平滑计算条件概率
  • Java安全-常规漏洞问题(SQL注入,XXE,SSRF,RCE)
  • Linux系统移植10:uboot移植
  • Prompt+Agent+LLM:半导体炉管设备健康评估的落地实战
  • 开源 Arkts 鸿蒙应用 开发(三)Arkts语言的介绍
  • 腾讯云TCCA认证考试报名 - TDSQL数据库交付运维工程师(PostgreSQL版)
  • 字节跳动 AI 视频生成模型 Seedance 1.0 悄然超越 Google Veo 3
  • 经典风格的免费wordpress模板
  • 【世纪龙科技】3D 赋能教育革新,解锁新能源汽车结构教学新范式
  • MCU LTE Cat.1 bis 8910DM + SD NAND MKDV4GIL-AST:赋能 T-Box 的智能存储通信一体化解决方案
  • java设计模式[4]之设计型模式
  • Java 实现网络图片下载到本地指定文件夹
  • iOS端网页调试 debug proxy策略:项目中的工具协同实践
  • 智净未来:华为智选IAM以科技巧思优化家庭健康饮水体验
  • AWS RDS :多引擎托管数据库服务
  • 前端基础之《Vue(20)—移动端REM布局》
  • Node脚本开发含(删除、打包、移动、压缩)简化打包流程
  • 安科瑞ASJ系列漏电流继电器:守护地铁配电安全的利器
  • vivado IP综合选项
  • 商业云手机平台哪个性价比最高?
  • DAY 35 模型可视化与推理
  • C函数基础.go
  • 江松科技报考上市:负债率高企,2024年现金流量、在手订单回退
  • 写一个vite插件处理console
  • el-upload 点击上传按钮前先判断条件满足再弹选择文件框
  • Python 构建壳来启动加密的 SpringBoot Jar 包,增加反编译难度
  • 亚远景-ASPICE与ISO 26262:理解汽车软件质量保障的双标体系
  • 小米汽车5月交付量超过28000台,与上月持平
  • STM32 GPIO 寄存器开发
  • Linux设备框架:kset与kobject基本介绍