【聚类算法】OPTICS基于密度聚类

news2024/11/22 15:27:42

every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog

0. 前言

对DBSCAN的补充,OPTICS聚类

1. 正文

1.0 DBSCAN的存在问题

前面我们介绍了DBSCAN,其能根据密度进行聚类。
但其存在这样一个问题:

  • 当eps较大时,会划分出A、B、C
  • 当eps较小时,会划分出C1、C2、C3 (A、B会被认为是噪声)
    无法得到A、B、C、C1、C2、C3

不同簇的密度大小可能不一样,二DBSCAN设置了一个固定了eps,会忽略掉其中的部分。

请添加图片描述

1.1 基础概念

核心点: 参考DBSCAN

核心距离: 使点p成为核心点的最小距离。
eg: eps=2,min_samples=5,p点,在半径eps=2时,有8个样本点。那么p是核心点。
距离p点最近的第5个点,其和核心点p的距离为0.8,那么p点的核心距离就是0.8。
注意: 计算min_samples时,包括核心点自身,所以上面只需要在邻域eps内找7个点,那么p就是核心点。

可达距离: 点p到核心点 o 的可达距离为,p 和o两点的距离和o的核心距离中的最大值。(和LOF算法中的可达距离类似,可参考)

说人话: 一个点可能在核心距离以内,也可能在核心距离以外。

eg1:

  • p点在核心点o1的核心距离之外,所以,可达距离reach-dist=d(p,o1)
  • p点在核心点02的核心距离之内,所以,可达距离reach-dist = d_5(o2)
    请添加图片描述

eg2:
点1、2、3在核心距离内,所以他们到核心点的可达距离=核心距离
请添加图片描述

1.2 算法流程

总的来说还是发展下线的套路,只有一个下线关系亲疏的区别(可达距离)

  1. 定义两个队列
    • 有序队列,存储核心点和密度直达点(核心点邻域内的点),按可达距离升序排列,待处理的样本
    • 结果队列,存储样本点输出,处理后的样本
  2. 选取未处理的核心点放入结果队列,计算邻域内样本的可达距离,按可达距离升序放入有序队列
  3. 从有序队列中提取第一个样本,如果为核心点计算可达距离,将可达距离最小的放入结果队列;如果不为核心点则跳过该点,选取新的核心,重复步骤2
  4. 迭代步骤2、3,直到处理了所有样本点,输出结果队列中的样本及可达距离。

1.3 结果

输出的是可达距离和样本点次序

  • 簇在图中表现为山谷,山谷越深,簇越紧密
  • 黄色的代表噪声,不形成谷

请添加图片描述

请添加图片描述

请添加图片描述

参考

[1] https://zhuanlan.zhihu.com/p/408243818
[2] https://zhuanlan.zhihu.com/p/77052675
[3] https://blog.csdn.net/haveanybody/article/details/113782209
[4] https://zhuanlan.zhihu.com/p/395088759
[5] https://blog.csdn.net/PRINCE2327/article/details/110412944
[6] https://blog.csdn.net/markaustralia/article/details/120155061
[7] https://blog.csdn.net/m0_45411005/article/details/123251733#t1

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

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

相关文章

cv2 安装问题, opencv

解决安装了opencv-python,但 import cv2 报错。 需要安装: pip install opencv-python-headless

VS 2022 修改应用程序选择目标框架为4.8

一、设置访问项目属性为True 打开工具菜单---选项---适用于Unity的工具 将这个访问项目属性一栏设置为True。之后要解决方案再重新打开即可生效。 二、设置应用程序选择目标框架 点击项目-->属性-->应用程序选择目标框架为.netfromwork4.8

Java入门程序——运算符

文章目录 赋值运算符算术运算符自增运算符自减运算符 比较(关系)运算符逻辑运算符逻辑运算符——快速运算(短路运算) 复合赋值运算符条件运算符字符串连接运算符三元运算符总结 赋值运算符 • 格式:变量名表达式&…

1.7 用户注册_判断用户是否存在和自定义响应数据结构

步骤1&#xff1a;在顶级pom.xml添加常用工具依赖。 <!-- apache 工具类 --> <dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.11</version> </dependency> <depen…

实现TCP通信(socket套接字)

一、TCP通信实现的过程 服务器端 socket函数 与 通信域 #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol); -domain: 指定通信域&#xff08;通信地址族&#xff09;; -type: 指定套接字类型; -protocol: 指定协…

大象机器人myCobot 280 2023版全新功能展示

引言 机械臂是一种可编程的、自动化的机械系统&#xff0c;它可以模拟人类的动作&#xff0c;完成各种任务&#xff0c;例如装配、喷涂、包装、搬运、焊接、研磨等。由于其高度灵活性和多功能性&#xff0c;机械臂在现代社会中已经得到了广泛的应用。 myCobot 280 M5Stack 202…

项目需求管理

项目需求管理的五大过程 一、需求获取 编写项目视图 范围文档 用户群分类 选择用户代表 建立核心队伍 确定使用实例 召开联合会议 分析用户工作流程、 确定质量属性、 检查问题报告 需求重用 二、需求分析 1、绘制关联图&#xff0c;用于定义系统与系统外部实体间的边界和接口的…

多个六轴机械臂联合作业搬运仿真(机器人工具箱)

1、建立三个六轴机械臂、工作平台与货物 clear clc close all % theta d a alpha sigma L1Link([0 0 0 pi/2 0 ]);%连杆1参数 L2Link([0 -0.1455 0.4375 0 0 ]);L2.offsetpi/2;%连杆2参数 L3Link(…

Playwright自动化测试工具 java版本

Playwright 第一个程序 public static void main(String[] args) {Playwright playwright Playwright.create(); // Browser browser playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false));BrowserType.LaunchOptions launchOptions …

nginx+lua(openresty) lua-mongodb 安装及使用(四)

前言 前章已经讲述 ua-protobuf 安装及使用 这章主要讲述 openresty 环境下 lua-mongodb 安装及使用 1:环境 ubuntu16(18) mongodb 3.6 2:安装mongodb 3.6 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 #创…

MySQL的初步认识——【初识MySQL】第一节

MySQL的初步认识——【初识MySQL】第一节 文章目录 MySQL的初步认识——【初识MySQL】第一节MySQL简介简介版本MySQL 5.5MySQL 5.6MySQL 5.7MySQL 8.0 安装建议 MySQL的卸载补充操作详情 小技巧 MySQL5.7.17的下载教训 MySQL简介 简介 MySQL是一个开源的关系型数据库管理系统…

【MongoDB】

目录 MongoDB基本简介 MongoDB基本概念 MongoDB和关系数据库的对比 MongoDB数据类型 MongoDB元素命名规则 MongoDB安装部署 MongoDB配置管理 MongoDB服务管理 MongoDB 多实例配置 基本操作 集合 数据备份与恢复 MongoDB复制集集群部署及管理 MongoDB复制集ReplSe…

[PG]生成表注释SQL

由于PostgreSQL无论是表还是字段的注释是通过 comment on语句来处理的。 可通过如下语句生成表的注释SQL执行语句&#xff1a; SELECT CONCAT(COMMENT ON , "type", 模式., "name", IS ", "comment", ";) AS "comment_sql&q…

软考:中级软件设计师:存储管理,分区存储,页式存储,逻辑地址,物理地址

软考&#xff1a;中级软件设计师:存储管理&#xff0c;分区存储 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是…

idea 启动项目 java: Compilation failed: internal java compiler error

1. 首先查看 项目的 编译的 JDK 版本是否是 匹配了或匹配的 2. 堆分配的内存不足导致&#xff0c;如下图位置 堆 构建程序的 堆大小调大

JMeter分布式压测连接Jenkins生成HTML报告时候报错No such file or directory

JMeter-master机器上没有该文件。从官网下载的JMeter都会有该文件&#xff0c;添加进去即可。

C++罕见的纯虚函数调用异常(_purecall abort)

现象 笔者最近遇到了一个诡异的BUG&#xff0c;析构函数执行期间crash&#xff08;VS2022调试器下表现为abort&#xff09;&#xff0c;调用堆栈最后一级是调用虚函数&#xff0c;所有指针变量正常。 更深层的原因和特征隐藏在虚函数表中。abort发生时&#xff0c;虚函数表中…

LNMP架构及部署、skyuc电影网站部署

目录 一、安装nginx 1、关闭防火墙 2.创建管理nginx用户 3.配置nginx 4.命令优化 5.创建nginx脚本 二、安装mysql数据库 三、安装PHP 1.上传php安装包 2.上传 zend-loader-hph5.6 3.创建用户 四、LNMP平台中部署skyuc电影网站 1.解压 SKYUC.v3.4.2.srouce 2.创建数据…

TCP的3次握手和4次挥手

一、3次握手、4次挥手的简单描述 1、3次握手 三次握手&#xff08;Three-way Handshake&#xff09;指建立一个TCP连接时&#xff0c;需要客户端和服务器总共发送3个包。流程简单描述如下图所示&#xff1a; 在socket编程中&#xff0c;客户端执行connect()时&#xff0c;将触…

仿苹果鼠标滚轮控制 文字渐入 淡出效果

废话不多说&#xff0c;上代码&#xff0c;纯jscss3 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&…