DBSCAN聚类算法概述

DBSCAN聚类算法是一个比较有代表性的基于密度的聚类算法。所谓密度,就是说样本的紧密程度对应其类别,属于同一个类别的样本是紧密相连的。DBSCAN聚类算法可以在噪声的空间数据库中发现任意形状的聚类。

DBSCAN聚类算法相关概念

在数据集中找一个点,以这个点为圆心,画一个指定半径的圆,在这个圆内的其他点就是与这个点密切的点,如果些点的数量达到一定的数量,也就是达到阈值,就可以认为这个点是核心点。

如果一个点在核心点的指定半径圆的这个范围内,那么就说这个点和核心点成为直接密度可达,如果有一系列的点都满足上一个点到这个点是直接密度可达,那么这个系列中不相邻的点就成为密度可达的。如果从一个点出发,得到两个密度可达的点,那么这两个点称为密度相连的。

如果一个点画了圆之后没有其他点了,那么这个点就成为这个类的边界点。

如果一个点从任何一个核心点出发都不能得到这个点,说明这个点不属于任何一个类,被称为噪声点。

举个例子核心点A的范围内存在点B,那么A和B就是直接密度可达,而C不在A的范围呢,但是以B为圆心进行画圆,C在B的范围内,那么B和C也是直接密度可达,而A和C就叫密度可达,同时A和C也是密度相连的。而C如果画圆之后范围内没有其他的点,那么就说明C是这个类的边界点,而如果还有一个点D不属于任何一个点画圈的范围内,而且他也不是核心点,那么就说D是噪声点。

DBSCAN聚类算法原理

先将所有的点进行标记,标记为为访问过,然后从数据集中抽取样本点,如果这个样本点是核心点,那么就从这个点出发,找到这个点的所有密度可达的点,这些点就是同一个类别,并且这些点被标记为已访问,然后再寻找下一个点,如果这个点不是核心点,那么就直接重新寻找下一个点,被标记为噪声点,不断重复这个过程,直到所有的点都被处理过。

举个例子,一个公司是属于一个类,老板的直接下属是总经理,然后各个总经理的下属是主管,各个主管的下属是组长,各个组长的下属是普通员工。从这家公司的老板开始,画了一个圆圈中了所有总经理,那么老板和这些总经理是同一个类的,然后从各个总经理进行画圆,又权重了各个主管,那么老板和各个总经理以及各个总经理的各个主管是同一给类的,以此类推,直到普通员工无法再圈到其他人,那么这个类别就分类结束了。然后到开始处理下一个点,下一个点可能是第二家公司的总经理,又能圈到了第二家公司的老板以及主管,第二家公司的老板又能圈到其他的总经理,依此类推,又得到了另一个类别。

半径和阈值的设置

DBSCAN聚类算法的核心就是设置半径和阈值,而半径大多数是根据距离来设置的,随机在数据集中找一个点,计算出到其他所有点的距离,从小到大进行排序,之后在距离值中找一个突变点,所谓突变点就是一个拐点,比如说一开始的距离增长是比较平稳的,然后突然有一个值增长的比较快或者明显,那么这个点就是突变点,就可以用这个突变点的前一个值或者跟前一个值进行求平均而作为半径。而阈值的选取基本上是一个比较小的值,需要进行多次尝试进行比较,从而得到一个合适的值。通常半径和阈值都是一个比较小的值。

DBSCAN聚类算法的优缺点

优点:

1.不需要认为指定划分的个数,而是通过计算过程自动分出来。

2.非常擅长找离群点。

3.可以处理任意形状的数据集。

缺点:

1.高维数据处理比较困难。

2.如果数据集密度不均匀,聚类间距相差很大时,聚类效果较差。

3.数据量大时,开销也很大,效率不过。

DBSCAN聚类算法代码

from sklearn.cluster import DBSCAN  #引入DBSCAN聚类算法
clf= DBSCAN(eps=0.5,min_samples=10)   #半径为0.5,阈值为10
clf.fit_predict(x_train)    #进行训练只需要一个值

代码函数及参数说明见

https://scikit-learn.org.cn/view/379.html

DBSCAN聚类算法相关推荐

  1. dbscan算法c语言实现,用C++实现DBSCAN聚类算法

    这几天由于工作需要,对DBSCAN聚类算法进行了C++的实现.时间复杂度O(n^2),主要花在算每个点领域内的点上.算法很简单,现共享大家参考,也希望有更多交流. 数据点类型描述如下: 复制代码 代码 ...

  2. dbscan聚类算法_一种视频人群流的轨迹聚类方法

    tags: KLT光流法,K-means聚类算法,DBSCAN聚类算法 方法简介 运动轨迹是一种在视频场景中捕捉复杂时间动态的有效方法.因此,我们将人流分割问题转化为一个轨迹提取和聚类任务.该方法分为 ...

  3. DBSCAN聚类算法原理及图解

    DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种很典型的密度聚类算法,和K-M ...

  4. K-means与DBSCAN聚类算法

    K-means与DBSCAN聚类算法 前言:目前数据聚类方法大体上可以分为划分式聚类方法(Partition-based Methods).基于密度的聚类方法(Density-based method ...

  5. PCL 点云DBSCAN聚类算法

    文章目录 一.简介 二.实现代码 三.实现效果 参考资料 一.简介 关于DBSCAN聚类算法的原理可以看之前的文章:点云DBSCAN聚类算法(C++),这里仅仅是对该算法进行了整理,让它可以支持PCL ...

  6. python:实现DBSCAN聚类算法(附完整源码)

    python:实现DBSCAN聚类算法 print(__doc__)# 引入相关包import numpy as npfrom sklearn.cluster import DBSCANfrom sk ...

  7. 毫米波雷达点云 DBSCAN聚类算法

    毫米雷达点云 DBSCAN聚类算法 聚类的目的 聚类算法分类 原型聚类 层次聚类 密度聚类 DBSCAN聚类算法原理 相关定义 算法流程以及伪代码 DBSCAN算法优缺点 DBSCAN参数选择 聚类衡 ...

  8. dbscan算法_如何掌握用于机器学习的流行DBSCAN聚类算法

    总览 DBSCAN聚类是一种针对无监督学习问题而被低估但非常有用的聚类算法 了解DBSCAN集群如何工作,为什么要学习以及如何在Python中实现DBSCAN集群 介绍 掌握无监督学习为数据科学家开辟 ...

  9. python DBSCAN聚类算法

    文章目录 DBSCAN聚类算法 基本思想 基本概念 工作流程 参数选择 DBSCAN的优劣势 代码分析 ==Matplotlib Pyplot== ==make_blobs== ==StandardS ...

  10. DBSCAN聚类算法——机器学习(理论+图解+python代码)

    一.前言 二.DBSCAN聚类算法 三.参数选择 四.DBSCAN算法迭代可视化展示 五.常用的评估方法:轮廓系数 六.用Python实现DBSCAN聚类算法 一.前言 去年学聚类算法的R语言的时候, ...

最新文章

  1. 这54个docker命令!你必须懂!
  2. Android学习之基础知识四-Activity活动7讲(活动的启动模式)
  3. bert 多义词_BERT之后,GLUE基准升级为SuperGLUE:难度更大
  4. input子系统分析一
  5. Linux下解决高并发socket最大连接数限制,tcp默认1024个连接
  6. html服装商品分类页面,商品分类.html
  7. Win/Chomer美化
  8. 企业微信网页应用开发 - 开发环境搭建
  9. 2022,程序员的出路在哪里?
  10. 【大牛感悟】淘宝陈吉平职业生涯--敬不甘平凡的自己
  11. Centos7 配置IP地址(动态或者静态)
  12. DevExpress XPO 学习笔记
  13. 微短剧的春天里,抖音、快手各有所思
  14. labelme_json_to_dataset报错: ModuleNotFoundError: No module named ‘labelme
  15. python 一张图画多条线_Python画多条线在一个图里
  16. CRM系统能给企业带来什么? CRM系统推荐
  17. C语言萌新写题第四天
  18. excel 表格身份证校验和手机号校验 公式
  19. android go预览版下载地址,Android 11 Go正式版-Android 11 Go安卓正式版预约 v1.0.0-友情手机站...
  20. RZ、NRZ、NRZI、曼彻斯特编码

热门文章

  1. 百度初级认证有用吗_赤峰BIM工程师认证
  2. C#中解决PC端程序多开的问题
  3. 计算机打印共享打印机,教您电脑打印机共享怎么设置
  4. 你可以有喜欢和善用的语言,但千万不要和她Bind
  5. 傅里叶变换 matlab FFT 函数解析
  6. javascript编辑器_评论:10个最佳JavaScript编辑器
  7. 51nod 1534 棋子游戏(博弈)
  8. 龙果 mycat mysql_龙果学院Spring Boot源码解析视频教程完整未加密(价值599)
  9. 大海捞针 - Everthing的实现思路
  10. ES-Checker