机器学习——dbscan密度聚类
完整版可关注公众号:大数据技术宅获取
DBSCAN(Density-Based Spatial Clustering of Applications with Noise,基于密度的有噪应用中的空间聚类)是一种简单,却又在处理时空数据时表现不错的算法,借最近正好有看,这里整理下。不同于k-means,以中心点为原则进行聚类,只要样本点离同一个簇中心最近,就被划分到同一个簇中,且簇的形状是“类圆形”(凸形状)。DBSCAN将簇定义为密度相连的点的最大集合,即把样本点的密度情况作为聚类的基本原则,然后把相互之间有联系且聚集程度高的那些部分连接起来最终形成簇。
DBSCAN原理
DBSCAN的原理可以概括为:同一个簇,其样本两两相连;对于任意一个簇,对应的样本集是最大最完整的,即在所有样本点中,如果某个样本点是由一个簇中的点出发可达的,那么该点也将被划分到同一个簇。
然而,如何定义上述的相连和可达呢,下面将给出DBSCAN的相关概念。
DBSCAN相关概念
ϵ-邻域:以给定对象为中心,ϵ为半径的区域。
核心对象(核心点):对于给定的点数MinPts,如果点p的ϵ邻域包含至少MinPts个样本点(包含p),那么点p就被称作核心对象。
密度直达:如果点p为核心对象,样本点q出现在P的ϵ-邻域中,那么点q就是点p出发直接密度可达的(注意:不能说点p是由q出发密度直达的,除非q也是核心对象)。
密度可达:可达指从核心点出发可以到达的样本点。这里的到达分为2种情况:一种情况就是上面所说的密度直达的;另外一种,就是间接到达的。间接能到达就是说,可以找到一个对象链(序列),如p,p1,p2,...,pn,q(n>=1),其中后者从前者是密度直达的(p1由p直达,p1由p0直达,q由pn直达),那么q就是由核心对象p出发可达的,q是一个可达点。
密度相连:对于两个样本点p和q,如果能找到一个样本点o,使得o到p可达,同时o到q也可达,那么p和q就是密度相连的。
簇:最大的密度相连对象的集合。
噪声:不包含在任何簇中的对象。
为了让大家更直观的理解以上概念,给大家举个小例子(见下图,忽略字丑)。这里假设MinPts=4,ϵ=1cm,那么可以看出,对于左边2个图中标绿的点,显然为核心对象,因为以它们为中心,ϵ为半径画圆后,圆里边的样本点数均大于MinPts的值4。左图s为q出发的密度直达点;左图p为q出发密度可达点;中间那幅图,由于o到p可达,o到q可达,故p和q密度相连。右图由于最上边的那个样本点不在任何簇中,所以被归为噪声。
DBSCAN优缺点
(1)优点
无需指定簇个数
对任意形状的稠密数据集都可以聚类,簇的形状可以任意
擅长寻找离群点(检测任务)
(2)缺点:
不适用于样本集密度不均匀、聚类间距相差大的情况
样本集较大时,聚类收敛时间较长
参数不好选择(参数对聚类结果的影响较大)
DBSCAN聚类举例
(1)生成数据集
代码:
1#导入所需python模块
2from sklearn.datasets import make_blobs
3from sklearn.cluster import DBSCAN
4import matplotlib; matplotlib.use('TkAgg')
5import matplotlib.pyplot as plt
6import numpy as np
7#利用生成器生成具有三个簇的合成数据集,共1000个样本点,为方便作图,特征维度这里设为2
8X,t=make_blobs(n_samples=1000,n_features=2,centers=[[1.2,1.5],[2.2,1.1],[1.5,2.8]],cluster_std=[[0.3],[0.2],[0.25]],random_state=2020)
9#生成样本点的分布图
10fig=plt.figure(figsize=(8,8))
11ax=fig.add_subplot(111)
12ax.scatter(X[:,0],X[:,1])
13plt.show()
生成的样本点分布图:
机器学习——dbscan密度聚类的更多相关文章
- DBSCAN密度聚类算法
DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种很典型的密度聚类算法,和K-M ...
- 【转】DBSCAN密度聚类算法
DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种很典型的密度聚类算法,和K-M ...
- DBSCAN密度聚类
1. 密度聚类概念 DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种很典型的密 ...
- (数据科学学习手札15)DBSCAN密度聚类法原理简介&Python与R的实现
DBSCAN算法是一种很典型的密度聚类法,它与K-means等只能对凸样本集进行聚类的算法不同,它也可以处理非凸集. 关于DBSCAN算法的原理,笔者觉得下面这篇写的甚是清楚练达,推荐大家阅读: ht ...
- 密度聚类 - DBSCAN算法
参考资料:python机器学习库sklearn——DBSCAN密度聚类, Python实现DBScan import numpy as np from sklearn.cluster impo ...
- 密度聚类 DBSCAN
刘建平:DBSCAN密度聚类算法 https://www.cnblogs.com/pinard/p/6208966.html API 的说明: https://www.jianshu.com/p/b0 ...
- Python之密度聚类
# -*- coding: utf-8 -*- """ Created on Tue Sep 25 10:48:34 2018 @author: zhen "& ...
- 吴裕雄 python 机器学习——密度聚类DBSCAN模型
import numpy as np import matplotlib.pyplot as plt from sklearn import cluster from sklearn.metrics ...
- 机器学习算法总结(五)——聚类算法(K-means,密度聚类,层次聚类)
本文介绍无监督学习算法,无监督学习是在样本的标签未知的情况下,根据样本的内在规律对样本进行分类,常见的无监督学习就是聚类算法. 在监督学习中我们常根据模型的误差来衡量模型的好坏,通过优化损失函数来改善 ...
随机推荐
- .NetCore 异步编程 - async/await
前言: 这段时间开始用.netcore做公司项目,发现前辈搭的框架通篇运用了异步编程方式,也就是async/await方式,作为一个刚接触的小白,自然不太明白其中原理,最重要的是,这个玩意如果不明白基 ...
- scrapy 采集数据存入excel
# -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to t ...
- Helium文档8-WebUI自动化-wait_until等待元素出现
前言 wait_until等待某个条件为真才继续往下执行.默认的超时时间为10s,每0.5查询一次,这俩参数选填.可以设置超时时间和轮询间隔. 可以作为添加后校验元素是否存在的场景 入参介绍 def ...
- MySQL数据库基础-2范式
数据库结构设计 范式 设计数据库的规范 第12345范式,凡是之间有依赖关系. 关系模型的发明者埃德加·科德最早提出这一概念,并于1970 年代初定义了第一范式.第二范式和第三范式的概念 设计关系数据 ...
- CDH+Kylin三部曲之一:准备工作
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 阿里云MNS官方PHP版SDK缺少message tag问题处理
最近在使用阿里云MNS官方PHP版SDK的过程中,发现发送到topic的消息,不能设置tag(其它语言版本SDK支持tag,如java,python),但在阿里云控制台页面发送是可以设置tag的. 因 ...
- Django( 学习第四部 Django的views视)
目录 视图层 JsonResponse对象 form表单之文件上传 request方法及属性 FBV与CBV JsonResponse对象 前端序列化 JSON.stringify() json.du ...
- Mac下使用GitHub+Hexo搭建个人博客
首发链接 开始之前需要在电脑上安装好Git和node.js,Mac上可以使用Homebrew命令行工具来安装Git和node.js 安装Homebrew 在命令行工具输入以下命令,如果已经安装过Hom ...
- MySql与Oracle的几个主要区别
转自:https://blog.csdn.net/c332472988/article/details/52804078 一.并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取.共享与 ...
- 扩展中国剩余定理(EXCRT)快速入门
问题 传送门 看到这个问题感觉很难??? 不用怕,往下看就好啦 假如你不会CRT也没关系 EXCRT大致思路 先考虑将方程组两两联立解开,如先解第一个与第二个,再用第一个与第二个的通解来解第三个... ...