DBSCAN聚类算法

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

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 算法的基本概念 利用计算机算法为计算机解题的过程实际上是在实施某种算法。 (1)算法的基本特征 算法一般具有4个基本特征:可行性、确定性、有穷性、拥有足够的情报。 (2)算法的基本运算和操作 算法的基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 (3)算法的3种基本控制结构 算法的3种基本控制结构是:顺序结构、选择结构、循环结构。 (4)算法基本设计方法 算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。 (5)指令系统 所谓指令系统指的是一个计算机系统能执行的所有指令的集合。 (2)数据结构研究的3个方面 ① 数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; ② 在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; ③ 对各种数据结构进行的运算。 2. 逻辑结构 数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了数据元素之间的前后件关系,通常记为R。一个数据结构可以表示成:B=(D,R) 其中,B表示数据结构。为了反映D中各数据元素之间的前后件关系,一般用二元组来表示。 例如,如果把一年四季看作一个数据结构,则可表示成:B =(D,R) D ={春季,夏季,秋季,冬季} R ={(春季,夏季),(夏季,秋季),(秋季,冬季)} 3. 存储结构 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。 由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系(即前后件关系),在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。 一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存储结构。 顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。 链式存储结构就是在每个结点中至少包含一个指针域,用指针来体现数据元素之间逻辑上的联系。 1.2.2 线性结构和非线性结构 根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。 (1)如果一个非空的数据结构满足下列两个条件: ① 有且只有一个根结点; ② 每一个结点最多有一个前件,也最多有一个后件。 则称该数据结构为线性结构。线性结构又称线性表。在一个线性结构中插入或删除任何一个结点后还应是线性结构。栈、队列、串等都为线性结构。 如果一个数据结构不是线性结构,则称之为非线性结构。数组、广义表、树和图等数据结构都是非线性结构。 (2)线性表的顺序存储结构具有以下两个基本特点: ① 线性表中所有元素所占的存储空间是连续的; ② 线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 元素ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k,ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。 (3)顺序表的运算有查找、插入、删除3种。 1.3 栈 1. 栈的基本概念 栈(stack)是一种特殊的线性表,是限定只在一端进行插入与删除的线性表。 在栈中,一端是封闭的,既不允许进行插入元素,也不允许删除元素;另一端是开口的,允许插入和删除元素。通常称插入、删除的这一端为栈顶,另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。 栈是按照“先进后出”或“后进先出”的原则组织数据的。例如,枪械的子弹匣就可以用来形象的表示栈结构。子弹匣的一端是完全封闭的,最后被压入弹匣的子弹总是最先被弹出,而最先被压入的子弹最后才能被弹出。 二级公共基础知识速学教程 2. 栈的顺序存储及其运算 栈的基本运算有3种:入栈、退栈与读栈顶元素。 ① 入栈运算:在栈顶位置插入一个新元素; ② 退栈运算:取出栈顶元素并赋给一个指定的变量; ③ 读栈顶元素:将栈顶元素赋给一个指定的变量。 1.4 队列 1. 队列的基本概念 队列是只允许在一端进行删除,在另一端进行插入的顺序表,通常将允许删除的这一端称为队头,允许插入的这一端称为队尾。当表中没有元素时称为空队列。 队列的修改是依照先进先出的原则进行的,因此队列也称为先进先出的线性表,或者后进后出的线性表。例如:火车进遂道,最先进遂道的是火车头,最后是火车尾,而火车出遂道的时候也是火车头先出,最后出的是火车尾。若有队列: Q =(q1,q2,…,qn) 那么,q1为队头元素(排头
摘刁石3七 随着Intemet的大规模普及和企业信息化程度的提高,无结构(如HTML和纯文本文 件)或半结构(如XML数据)化的文本数据正在以惊人的速度增长,文本数据的管理和分 析就变得空前重要。聚类技术作为文本信息挖掘技术中的核心技术之一,其目标是将文 档集合分成若干个簇,要求同一簇内文档内容的相似度尽可能的大,而不同簇之间的相 似度尽可能的小。 自20世纪50年代以来,人们提出了多种聚类算法,大致可分为基于划分和基于层 次的两种。在基于划分的聚类算法中,最著名的是K一MeanS算法。自 1967年由MacQueen 首次发表后,目前已经成为数理统计、模式识别、机器学习和数据挖掘等领域应用最普 遍的聚类算法之一,并衍生出多种变形算法,组成了K一MeanS算法家族。这些K一Means 类型的算法聚类速度快、易于实现,而且适用于文本、图像特征等多种数据的聚类分析。 然而,由于聚类初始中心点选择的随机性,传统K一Means算法以及其变种的聚类结 果会产生较大的波动。本文基于密度的概念,对每个点(文本)按密度大小排序,通过自 适应选择最佳密度半径来确定最大的点密度,选择密度较大且合理的点作为聚类的初始 中心点,从而优化中心点的选择,使K·Means算法有个好的起点。同时针对文本特征矩 阵的高维性、稀疏性等特点,文本的每一个类别聚类时限定于所选关键词的一个子集, 因此本文在每一个聚类簇上根据变量对聚类结果贡献的重要程度赋予其不同的权值,重 要的变量赋予较大的权值,可以有效地解决文本数据的稀疏性、高维性等问题,显著地 提高K一Means算法聚类的准确性,快速发现好的聚类簇,得到一种适合文本数据聚类分 析的改进算法。本文对K一Means算法做了两点重要改进,实验表明改进后的算法能够生 成质量较高而且波动性较小的聚类结果。同时,为了使聚类结果易于理解和表达,对聚 类簇进行合适的标引,以便正确理解聚类簇内容,提高信息处理的性能和效率

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值