机器学习——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,密度聚类,层次聚类)
本文介绍无监督学习算法,无监督学习是在样本的标签未知的情况下,根据样本的内在规律对样本进行分类,常见的无监督学习就是聚类算法. 在监督学习中我们常根据模型的误差来衡量模型的好坏,通过优化损失函数来改善 ...
随机推荐
- DFS深度优先搜索算法
Lake Counting(POJ No.2386) 有一个大小为N*M的园子,雨后积起了水.八连通的积水被认为是在一起的.请求出园子里共有多少个水洼?(八连通是指下图中相对w的*部分) * * * ...
- JVM系列【6】GC与调优2.md
JVM系列笔记目录 虚拟机的基础概念 class文件结构 class文件加载过程 jvm内存模型 JVM常用指令 GC与调优 了解HotSpot常用命令行参数 JVM的命令行参数参考: https:/ ...
- openresty上安装waf
一,查看openresty的当前版本 [root@localhost luacache]# /usr/local/openresty/bin/openresty -V nginx version: o ...
- PHP SPL标准库-迭代器
通过某种统一的方式遍历链表或者数组中的元素的过程叫做迭代遍历,这种统一的遍历工具我们叫做迭代器. PHP中迭代器是通过Iterator 接口定义的. ArrayIterator迭代器 foreach ...
- Eclipse JSP +Tomcat 环境搭建 错误记录
环境搭建请参考原文:https://www.cnblogs.com/james-lee/p/5964238.html 错误1:运行时,弹出如下错误:(如果没有此错误,请忽略) 原因是,我们之前点击了T ...
- codevs1298, hdu1392 (凸包模板)
题意: 求凸包周长. 总结: 测试模板. 代码: #include <iostream> #include <cstdio> #include <cstring> ...
- STM32入门系列-开发工具keil5安装
主要介绍如下三部分内容: keil5软件获取 keil5安装 安装STM32芯片包 软件获取 可以通过搜索引擎搜索关键字"KEIL5下载",找到其官方网站www.keil.com. ...
- STM32入门系列-学习STM32要掌握的内容
STM32芯片架构 STM32F103系列芯片的系统架构如下: STM32芯片基于ARM公司的Cortex-M3内核,由ST公司设计生产,内核与总线矩阵之间有I(指令).S(系统).D(数据)三条信号 ...
- 4G DTU是什么 可以应用于哪些行业?
4G是什么? 4G是移动电话网络通过蜂窝塔传输的信号的名称,蜂窝塔连接到更宽的互联网.这些是当今智能手机使用的信号,当您外出时,可以通过手机上网,因此他们不依赖电缆或光纤,也就是说无线网. 使用合适的 ...
- Centos7安装Gitlab11
一.基础介绍 1.简介 一个基于GIT的源码托管解决方案 基于rubyonrails开发 集成了nginx postgreSQL redis sidekiq等组件 2.安装要求 2g内存以上,有点占内 ...