DBSCAN基础到深入2025年1月5日 | 阅读 7 分钟 DBSCAN 全称它是一种非常推荐的无监督学习方法,用于开发模型和机器学习算法。它是一种聚类技术,用于区分低密度和高密度簇。它将数据点分成若干个组,以确保属于同一组的点具有相似的属性。1996 年,Xiaowei Xu、Jorg Sander、Martin Ester 和 Hans-Peter Kriegel 提出了该算法。 DBSCAN 的目的是处理具有快速区域查询的数据库。对于密度差异很大的数据集,它无法进行聚类。 特性
好处
缺点
不同组中的数据点具有不同的属性,并且同一组中具有相似属性的数据点被一个称为聚类评估或简单聚类的无监督学习技术分隔开。它包含广泛的差分进化技术。 所有聚类技术的核心都是相同的:我们首先计算相似性,然后利用这些信息对数据点进行分组或批处理。 带噪声点的空间聚类(DBSCAN)数据空间中的密集区域称为簇,它们被低密度区域分隔。这种“簇”和“噪声”的逻辑概念是 DBSCAN 算法的基础。 DBSCAN 的独特之处是什么?通过 K-Means 和 PAM 聚类等划分技术以及层次聚类,可以找到凸形或球形簇。换句话说,它们的适用性仅限于紧凑且分离良好的簇。此外,数据中存在噪声和异常值也会对它们产生负面影响。 真实世界的数据可能存在以下异常:
上图显示了一个包含非凸形簇和离群值的数据集。对于这样的输入,K-Means 算法在找到这些随机形状的簇方面存在困难。 DBSCAN 算法所需的参数EPS:它确定了数据点的邻域边界;也就是说,如果两个点的距离小于或等于‘eps’,则它们被认为是近邻。如果 EPS 值设置得太低,将有很大一部分数据被视为异常值。如果 EPS 选择得太高,簇将合并,大部分数据点将位于同一簇中。可以使用 k 距离图作为确定 EPS 值的依据。 MinPts 是指 EPS 半径内邻居(数据点)的最小数量。对于较大的数据集,必须选择更大的 MinPts 值。 通常,MinPts >= D+1,这是最小 MinPts,可以从数据集中维度 D 的数量获得。 在此技术中,我们使用三种不同类型的数据点。核心点:如果一个点在 EPS 半径内包含超过 MinPts 个点,则该点被视为核心点。 边界点:边界点是靠近核心点但其 EPS 半径内的点数少于 MinPts 的点。 DBSCAN 算法步骤
使用 Python 中的机器学习实现 DBSCAN 算法在这里,我们将使用 Python 的 sklearn 模块来计算 DBSCAN。此外,还将使用 matplotlib.pyplot 包来可视化簇。 导入库 DBSCAN 算法的机器学习评估指标我们将使用轮廓系数(Silhouette score)和调整兰德指数(Adjusted rand score)来评估聚类技术。轮廓系数的评分范围是 -1 到 1。如果一个数据点可能属于一个非常紧密的簇,并且与其他簇分离,那么它的评分将接近 1。值为 -1 是最差的。接近 0 的值表示簇重叠。 调整兰德指数的范围是 0 到 1。如果聚类恢复率显著高于 0.8,则认为其准确;如果显著高于 0.9,则认为其值得注意。恢复率低于 0.5 被认为是不充分的。 输出 Coefficient:0.13 Adjusted Rand Index: 0.31 黑点是异常值。我们可以通过调整 MinPts 和 eps 来改变簇的设置。 现在,需要提出的问题是: 在进行聚类分析时,DBSCAN 是否优于 K-Means?使用相似的属性统计数据,K-Means 和 DBSCAN(带噪声点的空间聚类)是两种聚类算法。然而,它们基于不同的理论运行,并且适用于不同类型的数据。当数据的形状不是球形或类别的范围很大且事先未知时,我们选择使用 DBSCAN。 DBSCAN(带噪声点的空间聚类)是一种频繁用于数据挖掘和机器学习的聚类技术。它在查找空间数据中的随机形状簇方面尤其有用。 以下是 DBSCAN 功能的简要概述:基于密度的方法 DBSCAN 的基础是数据点的密度。簇被定义为由稀疏区域分隔的密集数据点区域。 核心点、边界点和干扰
算法步骤
结果 该算法生成一组簇,以及被指定为噪声的点。 设置参数 DBSCAN 的两个最重要参数是 eps,它衡量样本之间允许一个样本被归类为另一个样本的邻域内的最大距离,以及 MinPts,它衡量创建密集区域所需的最少记录点数。 结论总之,强大的聚类算法 DBSCAN(带噪声点的空间聚类)在查找各种形状的地理数据簇方面尤其出色。由于其基于密度的方法,它能够找到基于数据点密度的簇,因此对簇大小和形状的变化具有抵抗力。DBSCAN 使用数据点的密度来定义簇。如果给定半径内有足够的邻居,它会找到核心点并在它们周围创建簇。簇由核心点、边界点和噪声点(不属于任何簇的点)组成。该算法使用密度标准来区分它们。 与其他一些聚类方法不同,DBSCAN 可以发现不同形状的簇,因此可以用于具有复杂结构的数据集。算法运行需要指定两个参数:min_samples(创建密集区域所需的最少数据点数)和 eps。要获得有意义的簇,正确的参数调整至关重要。通过将这些点分类到不同的组中,DBSCAN 可以有效地处理数据中的噪声,并对离群值具有弹性。可以使用各种库和编程语言来实现 DBSCAN。Scikit-learn 在 Python 中提供了简单的实现。 尽管 DBSCAN 是一种有效的算法,但它只能在某些情况下有效工作。在处理密度差异很大的数据集或簇的大小和形状变化很大的情况时,它的性能可能不佳。此外,选择正确的参数可能很困难,并且需要一些反复试验。DBSCAN 是实践中聚类任务的有用工具,尤其是在处理空间数据或具有复杂簇拓扑的数据集时。理解其指导原则、尝试调整参数并根据数据的具体情况调整其使用方式至关重要。 下一个主题Hdbscan |
Python 是一种高级解释型编程语言,易于理解。尽管简单,Python 提供了强大的工具和实用程序,用于创建高度可扩展和复杂的应用程序。它支持模块化编程,即逻辑可以独立定义,然后导入到其他程序部分...
阅读 4 分钟
? 在 Python 中,确定整数的符号是各种编程场景中的一项常见任务。无论您是进行数学运算、条件检查,还是只需要区分正数、负数和零值,了解如何有效地获取整数的符号...
阅读 4 分钟
在 Python 中,有用的编程包括采用技术作为主要程序组件。它侧重于声明式方法,其中程序是通过向数据添加功能而不是不可变的状态或负面后果来构建的。函数式编程是一种开发计算机系统的方法,它侧重于...
21 分钟阅读
Python playsound 模块简介 playsound 模块是一个轻量级、用户友好的音频文件播放库。设置非常简单,API 也相对直接。它非常适合开发人员将基本声音播放功能集成到 Python 脚本或应用程序中。根据是否……
阅读9分钟
使用 Python 检测和删除异常值 引言:在数据分析和机器学习领域,异常值可能会严重影响模型的准确性和可靠性。异常值是指与大多数数据显著不同的数据点,常常会扭曲统计分析...
阅读 3 分钟
Curses 库提供了与终端无关的方式,用于在面向字符的终端(如 VT100 和 Linux 控制台)以及模拟终端和程序中控制屏幕绘制和键盘。许多操作都是通过不同的控制代码执行的,其中包括光标移动、屏幕滚动和擦除...
阅读 16 分钟
在 Python 中创建一个简单的幻灯片应用程序是一项有趣且实用的项目,它结合了基本的编程技能和视觉创造力。无论您是初学者,还是已经编写代码一段时间,幻灯片应用都是学习 GUI 的绝佳机会...
阅读9分钟
介绍 在高性能计算中,当速度和效率至关重要时,管理 CPU 亲和性就变得至关重要。由于 Python 是一种多功能语言,它提供了有效管理此类低级活动的功能。os.sched_setaffinity() 函数就是这样一种工具。CPU 亲和性工作原理及其如何...
阅读 3 分钟
简介 云原生应用程序已成为许多复杂应用程序的常态,并且要从应用程序到其所依赖的系统保持可见性需要持续监控。随着系统规模的增长以及层级数量的增加,简单的直接方法(如日志记录)...
7 分钟阅读
异常是 Python 的一个强大功能,它允许您优雅地处理代码中的错误和意外情况。但是,有时您可能希望忽略异常并继续执行代码的其余部分。这在以下情况下很有用...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India