R语言编程中的DBScan聚类算法

DBScan (具有噪声的应用程序的基于密度的空间聚类) 是一种非线性、无监督的聚类算法,它能够识别密集堆积的数据点组(聚类),而无需预先指定聚类的数量。与 k-means 等算法不同,DBScan 能够发现任意形状的聚类,并区分数据集中的噪声或离群点。

DBSCAN 是如何工作的?

  • 选择参数 INLINECODE05ca7f75(邻域半径)和 INLINECODE4856e56b(形成密集区域的最小点数)。
  • 选择一个未访问的点,并查找 eps 半径内的所有邻点。
  • 如果邻点的数量至少达到 MinPts,则将其归类为核心点并开始一个新的聚类。
  • 通过包含连接到核心点的所有密度可达点来扩展聚类。
  • 对所有未访问的点重复该过程,直到每个点都被分配到聚类或被标记为噪声。

!imageDBScan 聚类

该图展示了 DBSCAN 聚类,其中核心点在 1 单位半径内具有 ≥ 4 个邻居,边界点靠近核心点但密度不够,而噪声点位于任何密集区域之外。

在 R 中实现 DBScan 聚类

我们在 R 中实现 DBScan 聚类算法,用于在 无监督学习 设置中识别非线性聚类并检测噪声。

1. 安装和加载必需的包

我们安装并加载 fpc 包,该包提供了 DBScan 功能。

  • install.packages: 用于安装外部包。
  • library: 用于将已安装的包加载到会话中。

R


CODEBLOCK_27796283

2. 加载和查看数据集

我们加载并查看内置的 Iris(鸢尾花)数据集,以了解其结构。

  • data: 用于加载内置数据集。
  • str: 用于查看数据集的结构。

R


CODEBLOCK_d3f147bd

输出:

!datasetOutput

3. 准备用于聚类的数据

我们移除标签列,为无监督聚类准备数据集。

  • [-5]: 用于从数据集中排除第五列(Species)。

R


CODEBLOCK_bf664b6a

4. 拟合 DBScan 模型

我们在准备好的数据集上拟合 DBScan 聚类模型,并指定参数。

  • set.seed: 用于固定随机初始化以保证结果可复现。
  • dbscan: 用于应用 DBScan 聚类算法。
  • eps: 定义邻域的半径。
  • MinPts: 定义形成聚类的邻域中最小点数。

R


CODEBLOCK_08815320

输出:

!dbscanOutput

5. 检查聚类分配

我们提取聚类分配结果,并将其与原始物种进行比较以进行评估。

  • $cluster: 用于访问聚类标签。
  • table: 用于将实际物种与聚类分配进行比较。

R


CODEBLOCK_d3326d2b

输出:

!dataOutput

6. 绘制聚类图

我们对聚类进行可视化,以理解 DBScan 形成的空间分组。

  • plot: 用于在 2D 空间中绘制聚类数据。

R


CODEBLOCK_390341b3

输出:

!DBScanOutput!dbscanOutput

输出显示了 DBSCAN 聚类结果的 2D 散点图,其中点根据聚类标签着色,噪声点被单独标记,这有助于直观地了解 Iris 数据集中的空间分组情况。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/24686.html
点赞
0.00 平均评分 (0% 分数) - 0