第一节3:dbscan性能分析优缺点和参数选择方法(代码片段)

快乐江湖 快乐江湖     2022-12-06     195

关键词:

文章目录

七:性能分析

DBSCAN算法对数据集中的每个点都要检索其邻域内的所有点,时间复杂度为 O ( n 2 ) O(n^2) O(n2)。但在低纬空间中,若采用 k k k- d d d树、 R R R树等结构,可以有效地检索特定点给定距离内的所有点,其时间复杂度可以降低到 O ( n l o g n ) O(nlogn) O(nlogn)

八:优缺点

(1)优点

①:可以对任意形状的稠密数据集进行聚类

②:可以在聚类的同时发现异常点,对数据集中的异常点不敏感

③:不需要指定簇数,并且多次实验结果往往是相同的

(2)缺点

①:如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合

②:调参相较于K-Means复杂一点,不同参数组合对聚类效果有很大影响

③:由于传统的欧式距离不能很好处理高纬数据,所以对于距离定义较难给出好的解决方案

④:DBSCAN算法适合处理不同簇的密度相对比较均匀的情况,当不同簇的密度变化很大时会出现一些问题

  • 从上一节所展示的聚类效果图中,大家可能会发现该算法很容易把一些数据点标记为噪声

九:参数选择

(1)修改参数的基本原则

当可视化完成后,我们可以根据其聚类的结果来微调参数

  • min_pts:一般选择维度+1或者维度×2即可
  • eps:如果所分的类少了,那就把eps调小一点;如果所分的类多了,那就把eps调大一点

(2)根据K-dist图调参

调参方法:可以用观察 k k k个最近邻距离( k k k距离)的方法来确定参数。对于簇中的某个点,如果 k k k不大于簇的样本个数,则 k k k距离将会很小,然后对于噪声, k k k距离将会很大。因此:对于任意一个正整数 k k k,计算所有数据点的 k k k距离,然后以递增方式排序,然后绘制 k k k-距离图,在拐点位置对应的就是合适的eps, 因为在拐点位置往往遇到了边界点或者噪声点

  • k k k距离:对于给定的数据集 P P P= p 1 , p 2 , . . . , p n \\p_1, p_2 , ... , p_n\\ p1,p2,...,pn,计算点 p ( i ) p(i) p(i)到数据集 D D D的子集 S S S中所有点之间的距离,距离按从小到大的顺序排序,则 d ( k ) d(k) d(k)就称之为 k k k距离

具体步骤如下

  1. 确定K值,一般取2*维度-1
  2. 绘制K-dist
  3. 拐点位置(波动最大的地方)为eps(可以取多个拐点尝试)
  4. min_pts可以取K+1
k = 3  # 取2*2-1
k_dist = select_minpts(train_data, k)  # K距离图
k_dist.sort()  # 排序(默认升序)
plt.plot(np.arange(k_dist.shape[0]), k_dist[::-1])  # 绘图时从大到小
plt.show()


def select_minpts(data_set, k):
    k_dist = []
    for i in range(data_set.shape[0]):
        dist =  (((data_set[i] - data_set)**2).sum(axis=1)**0.5)
        dist.sort()
        k_dist.append(dist[k])
    return np.array(k_dist)

如下eps建议取0.0581

十:DBSCAN算法和K-Means算法比较

DBSCANK-Means
算法思想基于密度基于划分
所需参数EpsMinPts簇个数 k k k
数据要求对数据分布不做任何假设假设所有簇来自球形的高斯分布
高维数据不适合适合(稀疏的)
形式化不能能够形式化为最小化每个点到质心的误差平方和的优化问题
稳定性稳定不稳定
时间复杂度 O ( n 2 ) O(n^2) O(n2) O ( n ) O(n) O(n)

第一节:层次聚类算法概述聚合和分裂方法

文章目录一:层次聚类算法概述(1)层次聚类(2)聚合和分裂各自研究的重点(3)优缺点二:聚合方法(1)Single-link方法A:概述B:例子(2)Completelink方法A:概述B& 查看详情

算法概述-第一节:算法基本概念和算法复杂性分析

文章目录一:算法与程序(1)算法的定义(2)算法的五大特征(3)算法与程序的区别(4)算法的描述方法二:算法复杂性分析(1)时间复杂度A:算法时间复杂度表示方法B࿱... 查看详情

408考研操作系统)第三章内存管理-第一节3:覆盖与交换

文章目录一:覆盖(1)基本思想(2)优缺点二:交换覆盖与交换技术是在多道程序环境下用来扩充内存的两种方法一:覆盖覆盖技术:主要用来解决程序大小超过物理内存总和的问题(1)基本思想思想:将程序分为多个段(多... 查看详情

第一节课:测试需求分析概述:

 测试过程的生命周期1测试需求分析(从产品需求中挖掘测试需求)2根据测试需求设计测试方案和测试用例(重点是功能测试)3.制定测试计划 ----执行前分析和准备阶段4测试执行5质量评估产品需求不一定是测试需求,... 查看详情

(王道408考研操作系统)第三章内存管理-第一节3:覆盖与交换

文章目录一:覆盖(1)基本思想(2)优缺点二:交换覆盖与交换技术是在多道程序环境下用来扩充内存的两种方法一:覆盖覆盖技术:主要用来解决程序大小超过物理内存总和的问题(1)基本思想思想:将程序分为多个段(多... 查看详情

(数据分析三板斧)第一斧numpy-第一节:numpy基本了解(代码片段)

文章目录一:Numpy了解二:Numpy之Ndarray对象三:Numpy之数据类型一:Numpy了解Numpy是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,它提供了许多高效的数值编程工具。其安装方法多种多... 查看详情

皇甫?struts_第一节课

本章讲解内容:DTD是DocunentTypeDefintion的缩写,即文档类型定义。DTD用来描述XML文档结构。DOM4J是一个非常优秀的javaXMLAPI,具有性能优异,功能强大和易用的特点。Java反射机制是只在运行状态中,动态获取信息及动态调用对象方... 查看详情

选择和实施聚类方法:DBSCAN 其他?

】选择和实施聚类方法:DBSCAN其他?【英文标题】:Choosingandimplementingclusteringmethod:DBSCANsomethingelse?【发布时间】:2014-04-2115:59:54【问题描述】:我需要对经纬度坐标的数据集进行聚类。我使用python作为我的语言并计划使用DBSCAN,... 查看详情

第一节:python环境和数据分析(代码片段)

文章目录一:Python简介和运行环境(1)Python介绍(2)运行环境(3)Pycharm使用二:数据分析常用库介绍(1)NumpyA:基本介绍B:索引和切片操作(2)PandasA:基 查看详情

如何用dbscan聚类算法做数据分析?

...任务的前置探索。内容什么是DBSCANDBSCAN算法实现原理算法优缺点DBSCAN数据分析实战案例本文技术来自 查看详情

关系查询处理和关系优化-第一节:查询处理(代码片段)

文章目录一:查询处理步骤(1)查询分析(2)查询检查(3)查询优化(4)查询执行二:实现查询操作的算法示例(1)选择操作的实现①:全表扫描②:索引(或散列... 查看详情

(王道408考研操作系统)第三章内存管理-第一节8:非连续分配管理方式之段页式管理方式

文章目录一:分段和分页管理优缺点二:段页式管理基本概念(1)基本思想(2)逻辑地址结构(3)段表和页表三:段页式管理实现地址管理一:分段和分页管理优缺点经过前面几节的叙述,可以看到分段和分页管理方式有各自... 查看详情

(王道408考研操作系统)第三章内存管理-第一节8:非连续分配管理方式之段页式管理方式

文章目录一:分段和分页管理优缺点二:段页式管理基本概念(1)基本思想(2)逻辑地址结构(3)段表和页表三:段页式管理实现地址管理一:分段和分页管理优缺点经过前面几节的叙述,可以看到分段和分页管理方式有各自... 查看详情

《统计学习方法》学习笔记之第一章

统计学习方法的学习笔记:第一章目录第一节统计学习的定义与分类统计学习的概念统计学习的分类 第二节统计学习方法的基本分类监督学习无监督学习强化学习 第三节统计学习方法三要素模型策略第四节模型评估与模型... 查看详情

(王道408考研操作系统)第二章进程管理-第一节5:线程概念和多线程模型(代码片段)

...意义上的线程(3)轻量级进程-LWP三:线程的优缺点(1)优点(2)缺点四:线程vs进程五 查看详情

第一节:javastring类介绍和常用方法(代码片段)

文章目录一:什么是String类二:String类常用方法(1)字符串构造A:常用构造方法B:注意(2)字符串比较(3)字符串查找(4)字符串转化A:数值和字符串的转换B:大小写转... 查看详情

ui第一节——uilable

1.首先说说怎么创建UI程序,打开xcode,选择Create anewXcodeproject.看如下截图2,接下来就蹦出一个和写OC应用差不多的界面,不多解释了3.我给工程取得名字就叫UILable,接下来我们就来认识一下这个UILable,接下来我们就看到了一个App... 查看详情

css第一节--选择器

...SS中的选择器,包括CSS及CSS3中的,作为自己的学习总结。第一部分:CSS初识  1.何为CSS?有什么作用?    CSS(CascadingStyleSheets):通常称为层叠样式表。    作用:主要负责HTML元素样式添加及页面的布局,是结构和样式... 查看详情