DBSCAN学习笔记
基本概念
核心点:若某个点的密度达到算法设定的阈值,即ε-邻域内点的数量(包括自己)不小于minPts,则该点为核心点。
边界点:在ε-邻域内点的数量小于minPts,但是落在核心点邻域内的点。
噪声点:不属于任何一个簇的点,从任何一个核心点出发都是密度不可达的。
ε-邻域:设定的半径r。
直接密度可达:若某点p在点q的r邻域内,且q是核心点,则称p从q出发是直接密度可达的。
密度可达:若有一个点的序列q0、q1...qk,对任意q0-qi-qk是直接密度可达的,则称从q0到qk密度可达,这实际上是直接密度可达的传播。
密度相连:若从某核心点p出发,点q和点k都是密度可达的,则称点q和点k是密度相连的。
如果p是核心点,则它与所有由它可达的点(包括核心点和边界点)形成一个簇,每个簇拥有最少一个核心点,边界点也可以是簇的一部分,但它在簇的边缘位置,因为它不能到达更多的点。在DBSCAN里,簇可以理解为被低密度区域分隔开的稠密对象区域,DBSCAN将具有足够高密度的区域划分为簇,并在具有噪声的空间数据中发现任意形状的簇。
执行过程
DBSCAN通过检查空间数据中每点的邻域来搜索簇。
如果点p的邻域包含的点多于minPts,则创建一个以p为核心点的新簇,然后,DBSCAN迭代地聚集从这些核心点密度可达的对象,这个过程可能涉及一些密度可达簇的合并,当没有新的点可以添加到任何簇时,该过程结束。
具体步骤
- 根据ϵ寻找每个点的邻域,找出核心点;
- 对于每一个核心点,如果这个核心点未被分配到某一个簇时,创建一个新的簇;
- 寻找这个核心点所有邻域点,并循环寻找这些邻域点相应的邻域点,将所有这些点分配到同一个簇;
- 重复以上三步,直到左右核心点都被分配。对于不属于任何簇的点即为噪声点。
参数选择
半径r:根据k距离来设定。
首先选中一个点,计算它和所有其它点的距离,从小到大排序为d1、d2、d3...,假如d3和d4之间的差异很大,就可以认为d1到d3之间的距离是合适的,将其设为半径。
minPts:一般可通过多次尝试设置。
优缺点
优点
不需要指定簇个数;
可以发现任意形状的簇;
擅长找到离群点(检测任务);
仅需两个参数。
缺点
不适用于高维数据;
参数对结果影响非常大;
sklearn中效率很慢(可以应用数据削减策略)。
算法可视化演示
DBSCAN学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
随机推荐
- jmeter接口自动化-通过csv文件读取用例并执行测试
最近在公司测试中经常使用jmeter这个工具进行接口自动化,简单记录下~ 一.在csv文件中编写好用例 首先在csv文件首行填写相关参数(可根据具体情况而定)并编写测试用例.脚本可通过优先级参数控制执 ...
- Git 实战分支版本管理策略 | TBD++ Flow
简介 随着Git的普及,为了更高效地进行团队协作开发,人们通过经验总结研究出了几套适用于各种团队和项目的分支管理策略,上篇文章我们讲解了 Git Flow 代码版本管理策略,它对版本控制较为严格,主 ...
- i春秋时间
打开题目就是一段php代码 大致的意思是 ------------------------------------------------------------------------------- ...
- 4 c++编程-提高篇-STL简介
重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦! 生命就像一朵花,要拼尽全力绽放!死磕自个儿,身心愉悦! 写在前面,本篇章主要简单介 ...
- C# Math 中的常用的数学运算
〇.动态库 System.Math.dll 引入动态库 using System.Math; Math 为通用数学函数.对数函数.三角函数等提供常数和静态方法,使用起来非常方便,下边简单列一下常用 ...
- css初始化收集
页面元素样式初始化 * { margin: 0; padding: 0; box-sizing: border-box; } html { font-size: 100px; } /* 去掉a链接的文 ...
- js文字无限循环向上滚动
html代码 <div id="scroll"> <div id="con1"> <p style="color: re ...
- 【Java SE】Day06 类与对象、封装和构造方法
一.面向对象思想 1.概述:调用对象的行为实现功能,无需一步一步实现(从执行者变成指挥者) 2.类和对象 类是属性和行为的集合,可以看成描述事物的模板 对象是事物的具体体现,是类的一个实例,具备该类的 ...
- 【面试题总结】JVM02:JVM参数调优、类加载机制
四.JVM参数调优 1.调优工具 (1)jvisualvm:jdk提供的性能分析工具,可以监控java进程,对dump文件分析:查看应用程序的详细信息,针对不同插件,实现监控GC过程.内存.进程.线程 ...
- 单节锂电池充电管理芯片,IC电路图
PW4054 是一款性能优异的单节锂离子电池恒流/恒压线性充电器.PW4054 适合给 USB 电源以及适配器电源供电.基于特殊的内部 MOSFET 架构以及防倒充电路, PW4054 不需要外接检测 ...