DBSCAN 聚类算法
DBSCAN 是一种非常著名的基于密度的聚类算法。其英文全称是 Density-Based Spatial Clustering of Applications with Noise意即一种基于密度对噪声鲁棒的空间聚类算法。直观效果上看DBSCAN 算法可以找到样本点的全部密集区域并把这些密集区域当做一个一个的聚类簇。DBSCAN 算法具有以下特点基于密度对远离密度核心的噪声点鲁棒无需知道聚类簇的数量可以发现任意形状的聚类簇1.基本概念1.1. 核心思想核心思想是基于密度。直观效果上看DBSCAN算法可以找到样本点的全部密集区域并把这些密集区域当做一个一个的聚类簇。1.2. 算法参数邻域半径R和最少点数目MinPoints。这两个算法参数实际可以刻画什么叫密集当邻域半径R内的点的个数大于最少点数目MinPoints时就是密集。1.3. 3种点的类别核心点边界点和噪声点。邻域半径R内样本点的数量大于等于minpoints的点叫做核心点。不属于核心点但在某个核心点的邻域内的点叫做边界点。既不是核心点也不是边界点的是噪声点。1.4. 4种点的关系密度直达密度可达密度相连非密度相连。如果P为核心点Q在P的R邻域内那么称P到Q密度直达。任何核心点到其自身密度直达密度直达不具有对称性如果P到Q密度可达那么Q到P不一定密度可达。如果存在核心点且P1到P2密度直达P2到P3密度直达……P(n-1)到Pn密度直达Pn到Q密度直达则P1到Q密度可达。密度可达也不具有对称性。如果存在核心点S使得S到P和Q都密度可达则P和Q密度相连。密度相连具有对称性如果P和Q密度相连那么Q和P也一定密度相连。密度相连的两个点属于同一个聚类簇。如果两个点不属于密度相连关系则两个点非密度相连。非密度相连的两个点属于不同的聚类簇或者其中存在噪声点。2. 算法步骤上面这些点是分布在样本空间的众多样本现在我们的目标是把这些在样本空间中距离相近的聚成一类。我们发现A点附近的点密度较大红色的圆圈根据一定的规则在这里滚啊滚最终收纳了A附近的5个点标记为红色也就是定为同一个簇。其它没有被收纳的根据一样的规则成簇。形象来说我们可以认为这是系统在众多样本点中随机选中一个围绕这个被选中的样本点画一个圆规定这个圆的半径以及圆内最少包含的样本点如果在指定半径内有足够多的样本点在内那么这个圆圈的圆心就转移到这个内部样本点继续去圈附近其它的样本点类似传销一样继续去发展下线。等到这个滚来滚去的圈发现所圈住的样本点数量少于预先指定的值就停止了。那么我们称最开始那个点为核心点如A停下来的那个点为边界点如B、C没得滚的那个点为离群点如N。基于密度这点有什么好处呢我们知道kmeans聚类算法只能处理球形的簇也就是一个聚成实心的团这是因为算法本身计算平均距离的局限。但往往现实中还会有各种形状比如下面两张图环形和不规则形这个时候那些传统的聚类算法显然就悲剧了。于是就思考样本密度大的成一类呗这就是DBSCAN聚类算法。2.1. 寻找核心点形成临时聚类簇扫描全部样本点如果某个样本点R半径范围内点数目MinPoints则将其纳入核心点列表并将其密度直达的点形成对应的临时聚类簇。2.2. 合并临时聚类簇得到聚类簇对于每一个临时聚类簇检查其中的点是否为核心点如果是将该点对应的临时聚类簇和当前临时聚类簇合并得到新的临时聚类簇。重复此操作直到当前临时聚类簇中的每一个点要么不在核心点列表要么其密度直达的点都已经在该临时聚类簇该临时聚类簇升级成为聚类簇。继续对剩余的临时聚类簇进行相同的合并操作直到全部临时聚类簇被处理。3.DBSCAN算法迭代可视化展示国外有一个特别有意思的网站它可以把我们DBSCAN的迭代过程动态图画出来。网址Visualizing DBSCAN Clustering设置好参数点击GO! 就开始聚类了还有其他的聚类实例聚类1聚类24. 常用评估方法轮廓系数这里提一下聚类算法中最常用的评估方法——轮廓系数Silhouette Coefficient计算样本i到同簇其它样本到平均距离aiai越小说明样本i越应该被聚类到该簇将ai称为样本i到簇内不相似度计算样本i到其它某簇Cj的所有样本的平均距离bij称为样本i与簇Cj的不相似度。定义为样本i的簇间不相似度bimin(bi1,bi2,...,bik2)说明si接近1则说明样本i聚类合理si接近-1则说明样本i更应该分类到另外的簇若si近似为0则说明样本i在两个簇的边界上5. sklearn调用范例5.1. 生成样本点# matplotlib inline # config InlineBackend.figure_format svg import numpy as np import pandas as pd from sklearn import datasets X, _ datasets.make_moons(500,noise 0.1,random_state1) df pd.DataFrame(X,columns [feature1,feature2]) df.plot.scatter(feature1,feature2, s 100,alpha 0.6, title dataset by make_moon);5.2. 调用dbscan方法完成聚类# matplotlib inline # config InlineBackend.figure_format svg from sklearn.cluster import dbscan # eps为邻域半径min_samples为最少点数目 core_samples,cluster_ids dbscan(X, eps 0.2, min_samples20) # cluster_ids中-1表示对应的点为噪声点 df pd.DataFrame(np.c_[X,cluster_ids],columns [feature1,feature2,cluster_id]) df[cluster_id] df[cluster_id].astype(i2) df.plot.scatter(feature1,feature2, s 100, c list(df[cluster_id]),cmap rainbow,colorbar False, alpha 0.6,title sklearn DBSCAN cluster result);参考文献20分钟学会DBSCAN - 知乎【他山之石】DBSCAN密度聚类算法理论图解python代码

相关新闻

arcgis相关的使用

arcgis相关的使用

这个是放gisMixins中的 import Map from arcgis/core/Map import MapView from arcgis/core/views/MapView import Graphic from arcgis/core/Graphic import GraphicsLayer from arcgis/core/layers/GraphicsLayer import BasemapToggle from arcgis/core/widgets/BasemapTog…

2026/7/12 13:48:27阅读更多 →
深度解密AMD Ryzen SMU调试工具:破解硬件调试的7大技术难题

深度解密AMD Ryzen SMU调试工具:破解硬件调试的7大技术难题

深度解密AMD Ryzen SMU调试工具:破解硬件调试的7大技术难题 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https…

2026/7/12 13:48:27阅读更多 →
linux指令、RTC时间设置、系统负载排查

linux指令、RTC时间设置、系统负载排查

指令速查表: 线上查询及帮助命令 (2 个) man 查看命令帮助,命令的词典,更复杂的还有 info,但不常用。 help 查看 Linux 内置命令的帮助,比如 cd 命令。 文件和目录操作命令 (18 个) ls 全拼 list,功能是列出目录的内容及其内容属性信息。 cd 全拼 change direct…

2026/7/12 13:48:27阅读更多 →
RAG失效、实时数据断供、知识库同步中断,DeepSeek联网搜索限制全链路故障排查手册,含7个生产环境checklist

RAG失效、实时数据断供、知识库同步中断,DeepSeek联网搜索限制全链路故障排查手册,含7个生产环境checklist

更多请点击: https://kaifayun.com 第一章:DeepSeek联网搜索限制的底层机制与设计边界 DeepSeek系列模型(如DeepSeek-V2、DeepSeek-R1)在默认部署模式下严格禁用实时联网搜索能力,其限制并非由单一策略实现&#xff0…

2026/7/12 14:58:42阅读更多 →
fprime:项目核心功能/场景

fprime:项目核心功能/场景

fprime:项目核心功能/场景 【免费下载链接】fprime F - A flight software and embedded systems framework 项目地址: https://gitcode.com/GitHub_Trending/fpr/fprime fprime 是一个面向嵌入式系统,尤其是航天领域软件的快速开发和部署的组件驱…

2026/7/12 14:58:42阅读更多 →
ChatGPT文案A/B测试必须监控的4个隐性衰减信号:响应时长偏移、情感极性漂移、槽位填充率坍塌、跨会话一致性断裂

ChatGPT文案A/B测试必须监控的4个隐性衰减信号:响应时长偏移、情感极性漂移、槽位填充率坍塌、跨会话一致性断裂

更多请点击: https://codechina.net 第一章:ChatGPT文案A/B测试必须监控的4个隐性衰减信号:响应时长偏移、情感极性漂移、槽位填充率坍塌、跨会话一致性断裂 在高并发、多轮次的A/B测试中,ChatGPT文案模型的性能退化往往不表现为…

2026/7/12 14:58:42阅读更多 →
如何快速掌握Mapbox Studio Classic:从零开始的地图设计完整教程

如何快速掌握Mapbox Studio Classic:从零开始的地图设计完整教程

如何快速掌握Mapbox Studio Classic:从零开始的地图设计完整教程 【免费下载链接】mapbox-studio-classic 项目地址: https://gitcode.com/gh_mirrors/ma/mapbox-studio-classic Mapbox Studio Classic是一款功能强大的桌面地图设计工具,它让任何…

2026/7/12 14:58:42阅读更多 →
Coze中文NLU更强?Dify工作流更灵活?拆解27个真实Prompt工程案例,找出你团队真正需要的那个“第一性原理”

Coze中文NLU更强?Dify工作流更灵活?拆解27个真实Prompt工程案例,找出你团队真正需要的那个“第一性原理”

更多请点击: https://codechina.net 第一章:Coze与Dify的定位本质差异 Coze 和 Dify 虽同属低代码大模型应用开发平台,但其设计哲学与核心目标存在根本性分野:Coze 以“对话式机器人即产品”为出发点,深度嵌入 Bot 生…

2026/7/12 14:58:42阅读更多 →
BigDL代码优化:CUDA kernel移植到Intel GPU的完整指南

BigDL代码优化:CUDA kernel移植到Intel GPU的完整指南

BigDL代码优化:CUDA kernel移植到Intel GPU的完整指南 BigDL作为Intel开源的深度学习框架,提供了将CUDA kernel高效移植到Intel GPU的完整解决方案。通过结合oneAPI工具链与SYCL编程模型,开发者可以实现GPU代码的跨平台复用,充分…

2026/7/12 14:53:41阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/12 0:02:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/12 0:02:11阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/12 0:02:11阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/12 0:02:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/12 0:02:11阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/12 0:02:11阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/11 16:20:28阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/11 23:15:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/11 18:12:23阅读更多 →