机器学习:DBSCAN算法(效果比K-means好)

基本概念

核心对象:以点为圆心半径为r的圆,如果圈里面的样本点大于给定的阈值(minPts),那么这个点就叫做核心点

直接密度可达:点p在q为圆心的圆内

密度可达:

p1与p2直接密度可达,p2与p3直接密度可达,所以p1与p3被称为密度可达

边界点:

以p1为核心点的圈含p2,p2自己为核心点也有对应圈,并且圈内有点p3,同样p3也有以p3为核心点的圈,并且有点p4,这说明点p1,p2,p3是可以发展下去的点(我认为可以理解成以之前圈住点为圆心画圈不断圈住新的点)

但是p4就不行了,因为以p4为核心点的圈内没有其他样本点或者说样本点的个数少于规定的阈值MinPts,没有继续"发展"下去

工作流程

算法

需要输入的数据

参数D:输入数据集

参数:指定半径

MinPts:密度阈值

如何选择参数,基本上都是不断尝试

优势和劣势

可视化展示

Visualizing DBSCAN Clustering

Gaussian Mixture

如下图所示,调大半径epsilon之后,离群点就变小了

如果想用DESCAN算法找离群点,可以考虑将半径调小

Smiley Face

Packed Circles

但对于这种密集区域此时,DBSCAN分类就不如K-means

半径小了,就出现分类很多的情况;半径大了,就出现分类只有一两个的情况,还不如直接K-means直接给定分类的类别

相关推荐
EDPJ6 分钟前
(2017|ICLR|Google Brain,主网络与超网络联合训练,静态/动态超网络,LSTM,RNN)超网络
神经网络·机器学习·lstm·超网络
wanderist.1 小时前
线性筛法详解:从筛质数到欧拉函数、Möbius 函数与约数函数
java·数据结构·算法
All for pursuit.1 小时前
【设计-1】208.实现Trie (前缀树)
数据结构·c++·算法·leetcode
statistican_ABin2 小时前
中国国际旅游发展分析报告—基于世界银行国际旅游数据的多维度分析
python·机器学习·旅游
weixin_307779132 小时前
C++代码实现MATLAB中的crossval函数功能
开发语言·c++·算法·matlab
青少儿编程课堂2 小时前
背包问题(0/1 背包与完全背包)解题精讲——动态规划入门
c++·python·算法·bfs·信息学竞赛
光影少年2 小时前
为什么 JavaScript 中 0.1 + 0.2 !== 0.3,如何让其相等?
前端·javascript·算法
HEJOO93 小时前
Linux 设备驱动系列——使用全局工作队列
java·linux·算法
Code_Solitude3 小时前
c语言:递归
java·c语言·算法
FII工业富联科技服务3 小时前
2026年AI技术发展趋势分析:从模型能力突破到工业AI的真实应用
大数据·人工智能·深度学习·机器学习·制造·ai智能体·agentic ai