DBSCAN算法
来源:互联网 发布:廖雪峰的javascript 编辑:程序博客网 时间:2024/05/22 04:37
基本概念
一. 基于密度的聚类算法 :寻找被低密度区域分离的高密度区域
区别于其他算法(基于对象之间的距离)
- 何为密度:特定点的密度通过在该点Eps半径之内的点的计数来估计,依赖于半径。
- 基于密度定义,将点分为:核心点(稠密区域内部的点),边界点(稠密区域边界上的点),噪声或背景点(稀疏区域中的点)。
- 直接密度可达:q作为核心点,p在其Eqs邻域内,则p是从q出发直接密度可 达的。
- 密度可达:存在对象链p(1)到p(n),p(i+1)是p(i)直接密度可达,则pn是p1密度可达。
密度相连:如果存在对象O∈D,使对象p和q都是从O关于Eps和MinPts密度可达的,那么对象p到q是关于Eps和MinPts密度相连的(density-connected)。
参数说明:半径Eps内含有超过MinPts数目的点使核心点,在半径Eps内点的数量小于MinPts,但是在核心点的邻居是边界点,边界点不是核心点,但是在核心点的邻域内,其余的是噪音点
Eps邻域:在给定对象Eps内的邻域
二. 算法原理
- DBSCAN通过检查数据集中每点的Eps邻域来搜索簇,如果点p的Eps邻域包含的点多于MinPts个,则创建一个以p为核心对象的簇;
- 然后,DBSCAN迭代地聚集从这些核心对象直接密度可达的对象,这个过程可能涉及一些密度可达簇的合并;
- 当没有新的点添加到任何簇时,该过程结束.
算法描述:
输入:数据集D,参数MinPts,Eps 输出:簇集合。
(1) 首先将数据集D中的所有对象标记为未处理状态 (2) for 数据集D中每个对象p do (3) if p已经归入某个簇或标记为噪声 then (4) continue; (5) else (6) 检查对象p的Eps邻域 ;(7) if 邻域包含的对象数小于MinPts then (8) 标记对象p为边界点或噪声点; (9) else (10) 标记对象p为核心点,并建立新簇C, 并将p邻域内所有点加入C (11) for p邻域中所有尚未被处理的对象q do (12) 检查其Eps邻域,若包含至少MinPts个对象,则将邻域中未归入任何一个簇的对象加入C; (13) end for (14) end if (15) end if (16) end for
二. 其他问题思考
- 如何选取Eps和MinPts:思想是这样的对于在一个类中的所有点,它们的第k个最近邻大概距离是一样的,噪声点的第k个最近邻的距离比较远,所以, 尝试根据每个点和它的第k个最近邻之间的距离来选取。
阅读全文
0 0
- dbscan算法
- dbscan算法
- dbscan算法
- dbscan算法
- DBSCAN算法
- DBScan 算法
- DBSCAN算法
- DBSCAN算法
- DBSCAN算法
- DBSCAN算法
- DBScan算法
- 聚类算法:DBSCAN
- DBSCAN算法详解
- python dbscan算法
- DBSCAN聚类算法
- 聚类-DBSCAN算法
- DBSCAN 聚类算法
- DBSCAN聚类算法
- JavaScript计时器 console.time(name)
- iOS时间转换当地时区
- web开发图表(ichartjs组件开发)
- 可自定义分页宽度的UIScrollView(Swift实现)
- 线性筛素数的欧拉筛法
- DBSCAN算法
- 谷歌电子市场开发流程(9)-线程,线程池
- mybatis之MapperFactoryBean源码解读
- 1008. 数组元素循环右移问题 --秒杀超简单方法
- 面向对象——异常RuntimeException
- Cloudera Manager 5和CDH5离线安装
- laravel
- webview 输入框无法调用键盘
- [LeetCode] String to Integer (atoi) Python