数据处理: OPTICS聚类及Python实现

1.  基本原理

OPTICS(Ordering Points To Identify the Clustering Structure)是一种基于密度的聚类算法,可视为DBSCAN的改进版本。它能够识别不同密度的簇,并自动发现数据中的层次化聚类结构,适用于复杂分布的数据集。适合如下应用场景:

  • 地理空间数据分析:识别不同密度的城市热点区域。
  • 生物信息学:基因表达数据的层次化聚类。
  • 异常检测:通过可达性图识别离群点(高可达距离的点)。
  • 图像分割:处理纹理密度不均匀的图像。

关键概念

DBSCAN的局限性

  • 对全局参数eps(邻域半径)敏感,难以处理密度变化大的数据。

  • 无法直接输出层次化聚类结果。

OPTICS的改进

  • 通过计算可达距离(Reachability Distance),避免固定eps的限制。

  • 生成可达性图(Reachability Plot),支持多尺度聚类分析。

术语定义
核心距离使点成为核心对象的最小半径(类似DBSCAN的eps)。
可达距离p到点o的可达性,定义为max(核心距离(o), 欧氏距离(o,p))
簇排序通过可达距离生成数据点的有序列表,反映密度结构。

算法步骤

  1. 初始化

    • 设定参数min_samples(核心点的最小邻域点数)和max_eps(可选,限制搜索范围)。

    • 为每个点计算核心距离和可达距离。

  2. 生成有序列表

    • 从任意未访问点开始,扩展其eps-邻域。

    • 若邻域内点数≥min_samples,标记为核心点,并计算其邻域点的可达距离。

    • 按可达距离从小到大将点加入有序列表。

  3. 提取簇结构

    • 通过可达性图识别“山谷”区域(低可达距离),每个山谷对应一个簇。

    • 使用参数xieps切割可达性图,提取最终聚类。

OPTICS与HDBSCAN对比如下:

特性HDBSCANOPTICS
基础算法基于DBSCAN的层次化改进基于DBSCAN的密度排序扩展
核心思想通过层次聚类提取稳定簇,自动选择簇生成可达性图,通过阈值提取簇
簇提取方式基于最小簇大小和最小样本数基于可达距离和ξ(xi)参数
噪声处理明确区分噪声点(标签=-1)可通过参数过滤噪声

参数HDBSCANOPTICS
关键参数min_cluster_sizemin_samplesmin_samplesxieps
距离度量支持任意距离(如欧式、余弦)通常使用欧式距离
自动化程度自动确定簇数需手动设置ξ或eps提取簇
优点

自动确定簇数:无需预设簇数量。

处理变密度数据:适应不同密度的簇。

鲁棒性强:对噪声和参数选择不敏感。

可视化支持:可达性图直观展示聚类结构。

灵活性高:通过ξ参数动态提取簇。

缺点

计算复杂度高:大数据集可能较慢。

需要调参min_cluster_size影响结果。

手动提取簇:需人工干预选择阈值。

参数敏感xieps影响结果稳定性。

场景HDBSCANOPTICS
自动聚类✅ 最佳选择⚠️ 需手动提取簇
变密度数据✅ 表现优异✅ 需调整ξ参数
噪声数据✅ 明确标记噪声✅ 需后处理过滤
可视化分析⚠️ 有限支持✅ 可达性图直观
大规模数据⚠️ 较慢(可近似优化)⚠️ 中等规模更适用

2. Python实现

from sklearn.cluster import OPTICS
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons# 生成示例数据(月牙形分布)
X, _ = make_moons(n_samples=300, noise=0.05, random_state=42)# OPTICS模型
# min_samples:核心点的最小邻域点数
# xi:决定簇边界陡峭度的阈值(0~1)
# min_cluster_size:最小簇大小(可选)
clustering = OPTICS(min_samples=10, xi=0.05, min_cluster_size=0.1)# 拟合并预测
clustering.fit(X)
labels = clustering.labels_# 可视化
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', s=10)
plt.title("OPTICS Clustering")
plt.show()

参数说明

参数作用
min_samples定义核心点的邻域最小点数(值越小,对噪声越敏感)。
xi控制簇边界的陡峭度(较小值生成更多小簇)。
min_cluster_size簇的最小样本比例(0~1)或绝对数量。
max_eps限制邻域搜索的最大半径(若为np.inf,则完全依赖min_samples)。

可达性图解读

  • 低可达距离的区域(“山谷”)代表高密度簇。

  • 高峰值点可能是噪声或簇边界。

# 绘制可达性图
space = np.arange(len(X))
reachability = clustering.reachability_[clustering.ordering_]
labels = clustering.labels_[clustering.ordering_]plt.figure(figsize=(10, 5))
plt.plot(space, reachability, 'k-', alpha=0.6)
plt.scatter(space, reachability, c=labels, cmap='viridis', s=10)
plt.ylabel('Reachability Distance')
plt.title('Reachability Plot')
plt.show()

层次化簇提取

通过调整xi或手动切割可达性图,可提取不同密度的簇:

# 使用不同xi值提取簇
clustering_xi = OPTICS(min_samples=10, xi=0.1).fit(X)
labels_xi = clustering_xi.labels_plt.scatter(X[:, 0], X[:, 1], c=labels_xi, cmap='viridis', s=10)
plt.title(f"OPTICS with xi=0.1 (Clusters: {len(np.unique(labels_xi))})")
plt.show()

3. 总结

特性OPTICSDBSCAN
参数敏感性仅需min_samples,对eps不敏感依赖epsmin_samples
输出结果可达性图 + 层次化簇单一密度阈值下的硬划分
计算复杂度较高(需维护有序列表)较低
适用场景多密度簇、层次化分析单一密度、简单分布

优点

  • 无需预设eps,适应多密度数据。

  • 可输出层次化聚类结构。

  • 对噪声鲁棒性强。

缺点

  • 计算复杂度高于DBSCAN(近似于O(n log n))。

  • 参数xi的选择需要经验或调优。自动选择xi:基于可达性图的梯度变化自动切割(如sklearn.cluster.cluster_optics_xi)。

  • 高维数据可能表现不佳(需配合降维)。


进阶技巧

  • 加速计算:使用KDTreeBallTree优化邻域搜索(通过metric_params设置)

  • 处理大数据集:结合HDBSCAN(基于OPTICS思想的扩展算法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyCharm 在 Linux 上的完整安装与使用指南

PyCharm 在 Linux 上的完整安装与使用指南—目录 一、PyCharm 简介二、下载与安装1. 下载 PyCharm2. 安装前的依赖准备3. 安装步骤方法 1:通过 Snap 安装(推荐)方法 2:手动安装(从官网下载 .tar.gz 文件)方…

【React】路由器 React-Router

安装路由模式路由组件和属性 (Link、NavLink、Outlet、Routes、Navigate、element)路由传参 ( Hook:useParams 、useSearchParams )路由跳转(Hook:useNavigate)路由的构建 前端路由指的是一种将浏览器URL与特定页面或视图关联起来…

Flowable7.x学习笔记(十)分页查询已部署 BPMN XML 流程

前言 上一篇文章我们已经完成了流程的部署功能,那么下一步就是要激活流程了,但是我们要需要明确的指定具体要激活部署后的哪一条流程,所以我们先把已部署的基础信息以及具体定义信息分页查询出来,本文先把基础代码生成以及完成分页…

【论文阅读23】-地下水预测-TCN-LSTM-Attention(2024-11)

这篇论文主要围绕利用深度学习模型检测地下水位异常以识别地震前兆展开。 [1] Chen X, Yang L, Liao X, et al. Groundwater level prediction and earthquake precursor anomaly analysis based on TCN-LSTM-attention network[J]. IEEE Access, 2024, 12: 176696-176718. 期刊…

electron从安装到启动再到打包全教程

目录 介绍 安装 修改npm包配置 执行安装命令 源代码 运行 打包 先安装git, 安装打包工具 导入打包工具 执行打包命令 总结 介绍 electron确实好用,但安装是真的要耗费半条命。每次安装都会遇到各种问题,然后解决了之后。后面就不需要安装了,但有时候比如电脑重装…

【Rust 精进之路之第4篇-数据基石·上】标量类型:整数、浮点数、布尔与字符的精妙之处

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025-04-20 引言:构成万物的“原子”——标量类型 在上一篇文章【变量观】中,我们深入探讨了 Rust 如何通过 let、mut、const…

消息中间件RabbitMQ:简要介绍及其Windows安装流程

一、简要介绍 定义:RabbitMQ 是一个开源消息中间件,用于实现消息队列和异步通信。 场景:适用于分布式系统、异步任务处理、消息解耦、负载均衡等场景。 比喻:RabbitMQ 就像是快递公司,负责在不同系统间安全快速地传递…

Docker概念详解

文章目录 一、Docker:容器化应用的基石1.1 环境1.2 Docker 是什么1.3 Docker镜像1.3.1 基础镜像(Base Image)1.3.2 Dockerfile1.3.3 容器镜像(Container Image) 1.4 Registry1.5 容器1.6 Docker VS 虚拟机 二、Docker 的架构原理2.1 C/S软件架…

linux查看及修改用户过期时间

修改用户有效期 密码到期时间 sudo chage -E 2025-12-31 username sudo chage -M 180 username sudo chage -d $(date %F) username 查询用户密码到期时间 for user in $(cat /etc/passwd |cut -d: -f1); do echo $user; chage -l $user | grep "Password expires"; …

CGAL 计算直线之间的距离(3D)

文章目录 一、简介二、实现代码三、实现效果一、简介 这里的计算思路很简单: 1、首先将两个三维直线均平移至过原点处,这里两条直线可以构成一个平面normal。 2、如果两个直线平行,那么两条直线之间的距离就转换为直线上一点到另一直线的距离。 3、如果两个直线不平行,则可…

<项目代码>YOLO小船识别<目标检测>

项目代码下载链接 YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN)&#xff0…

基于RK3588+FPGA+AI YOLO全国产化的无人船目标检测系统(二)平台设计

基于项目需求确定国产 AI 平台的总体架构设计,完成硬件单元的选择和搭建以及开发工具链的配置工作。 4.1 国产 AI 平台总体架构 本文设计了一套灵活高效的国产 AI 平台总体架构,设计方法是在嵌入式平 台上使用串行总线( Peripheral Co…

Typescript中的泛型约束extends keyof

概要 本文主要分享Typescript中泛型约束的使用方法。在开发过程中,通过使用该方法,可以在编译阶段,帮助我们查找到一些潜在的空值引用错误。 代码和实现 我们预先定义了IUser接口,接口包括了id,姓名,性别…

C++ 2025 展望:现代编程需求与新兴技术驱动下的变革

C 作为一门成熟的语言,在多个领域(嵌入式系统、高性能计算、图形渲染、游戏开发等)依旧占据重要地位。在 2024 年,C 开发继续在许多传统领域保持强劲的势头,同时也面临着新的挑战与发展方向。展望 2025 年,…

包管理工具有哪些?主流软件分享

常见的包管理工具主要有:npm、Yarn、pnpm、Composer、Maven、pip、Conda 等,其中 npm 是目前全球使用最广泛的JavaScript包管理工具,以丰富的生态、便捷的使用体验以及强大的社区支持闻名。npm具备依赖管理、版本控制、脚本执行等强大功能&am…

2025年世界职业院校技能大赛实施方案(意见稿)

为贯彻落实《教育强国建设规划纲要(2024—2035年)》,进一步提升世界职业院校技能大赛(以下简称“大赛”)内涵质量,发挥大赛引领作用,提升高技能人才培养质量,服务现代职业教育体系建…

Redis 慢查询分析与优化

Redis 慢查询分析与优化 参考书籍 : https://weread.qq.com/web/reader/d5432be0813ab98b6g0133f5kd8232f00235d82c8d161fb2 以下从配置参数、耗时细分、分析工具、优化策略四个维度深入解析 Redis 慢查询问题,结合实战调优建议,帮助开发者…

AI之pdf解析:Tesseract、PaddleOCR、RapidPaddle(可能为 RapidOCR)和 plumberpdf 的对比分析及使用建议

目录标题 Tesseract、PaddleOCR、RapidPaddle(可能为 RapidOCR)和 plumberpdf 的对比分析1. Tesseract类型: 开源 OCR 引擎特点:缺点:适用场景: 2. PaddleOCR (推荐)类型:特点:缺点:适用场景: 复杂版式文档、多语言混合文本、需要高精度识别的场景&#…

算法 | 成长优化算法(Growth Optimizer,GO)原理,公式,应用,算法改进研究综述,matlab代码

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 成长优化算法 一、算法原理二、核心公式三、应用领域四、算法改进研究五…

网络原理(TCP协议—协议格式,性质(上),状态)

目录 1.TCP协议段格式。 2.TCP协议传输时候的性质。 2.1确认应答。 2.2超时重传。 2.3连接管理。 2.3.1 三次握手。 2.3.2四次挥手。 3.TCP常见的状态。 1.TCP协议段格式。 TCP协议段是由首部和数据两部分构成的。首部包含了TCP通信所需要的各种控制信息,而…