Python异常检测- DBSCAN

系列文章目录

Python异常检测- Isolation Forest(孤立森林)
python异常检测 - 随机离群选择Stochastic Outlier Selection (SOS)
python异常检测-局部异常因子(LOF)算法


文章目录

  • 系列文章目录
  • 前言
  • 一、DBSCAN算法原理
  • 二、DBSCAN算法流程
  • 三、DBSCAN算法的优缺点
  • 四、DBSCAN算法的python实现


前言

基于DBSCAN算法的异常检测是一种非监督学习方法,它可以在没有先验知识或标签的情况下检测数据中的异常值。

一、DBSCAN算法原理

DBSCAN,全称Density-Based Spatial Clustering of Applications with Noise,是一种基于密度的聚类算法。该算法假设异常值在数据中的密度要么很低,要么与其他数据点分离得很远。在DBSCAN算法中,密度被定义为每个点周围一定距离内存在的其他点数目。如果一个点周围的密度大于某个预设的阈值,则将该点视为核心点,否则将其视为噪声点。
DBSCAN的基本原理:

  • Eps:一个阈值,定义了邻域的半径,即在多大的距离范围内,一个点被认为是另一个点的邻域。

  • MinPts:一个阈值,定义了核心点的邻域内至少需要包含的点数,当一个点的Eps邻域内包含的点数大于或等于MinPts,这这个点被认为是核心点。

  • 核心点:在Eps邻域内至少有MinPts个点的点。

  • 边界点:邻域内没有达到MinPts个点,但某个核心点的邻域内的点。

  • 噪声点:既不是核心点也不是边界点的点,这些点通常都是异常值。

二、DBSCAN算法流程

假定DBSCAN算法的输入和输出如下图所示,对于无法形成聚类簇的孤立点,即为异常点(噪声点),DBSCAN算法的流程如下:

1.选择Eps和MinPts;

2.随机选择一个未访问的数据点;

3.对于参数Eps和MinPts,则找出所有从选择点的p密度可达的数据对象点,形成一个簇;

4.重复步骤2,将新发现的点也加入该簇,直到簇中没有新的点可以加入;

5.如果该簇中的点数目大于某个预设的最小点数,则将该簇标记为核心点;

6.重复步骤2-5,直到所有的点都被访问过。

7.将未被标记为核心点的点视为噪声点;

8.对未被标记的核心点进行簇的扩展,将其与可达的核心点合并成一个簇;

9.将每个簇视为一个异常检测器,使用该簇中的点来检测数据中的异常值。

在这里插入图片描述

三、DBSCAN算法的优缺点

DBSCAN算法的不需要先验知识或标签,而且可以处理不同形状和大小的簇。但是,它对密度参数的选择比较敏感,因此需要进行参数调优。
DBSCAN的优点:

  • 能够发现任意形状的聚类,并且对数据集的噪声点数量敏感度低。

  • 不需要指定预先确定的聚类数。

DBSCAN的缺点:

  • 参数Eps和MinPts的选择对聚类结果影响很大。

  • 对于非密集区域的数据集,DBSCAN的性能不如K-means算法。

四、DBSCAN算法的python实现

使用scikit-learn库中的DBSCAN算法进行异常值检测,首先需要安装scikit-learn库

pip install scikit-learn

然后按照以下步骤来实现:

  1. 导入所需的库;
  2. 准备数据集;
  3. 创建模型并训练数据;
  4. 使用模型预测类别,并识别出噪声点(即异常值)
    具体的python代码如下:
# 导入必要的库
from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons
from sklearn.preprocessing import StandardScaler
import numpy as np# 生成一个模拟数据集
X, labels = make_moons(n_samples=200, noise=0.05, random_state=0)
X = StandardScaler().fit_transform(X)  # 标准化数据# 创建一个DBSCAN实例
db = DBSCAN(eps=0.3, min_samples=5)# 拟合数据
db.fit(X)# 获取每个样本的簇标签
labels = db.labels_# 噪声点的标签为 -1
anomalies = X[labels == -1]# 打印异常值的数量
print(f"Number of anomalies detected: {len(anomalies)}")# 如果你想可视化这些点
import matplotlib.pyplot as plt
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
# 高亮显示异常值
plt.scatter(anomalies[:, 0], anomalies[:, 1], color='r', marker='x')
plt.title("Anomaly Detection using DBSCAN")
plt.show()

参考资料
统计学&Python】数据异常如何检验?14种检验方法!
数据处理和分析之数据预处理:异常值处理(DBSCAN算法在异常值检测中的应用)
基于dbscan算法的异常检测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/456223.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【小白学机器学习16】 概率论的世界观2: 从正态分布去认识世界

目录 1 从正态分布说起 1.1 正态分布的定义 1.2 正态分布的名字 1.3 正态分布的广泛,和基础性 2 正态分布的公式和图形 2.1 正态分布 2.2 标准正态分布 3 正态分布的认识的3个层次 3.1 第1层次:个体的某个属性的样本值,服从正态分布…

《IDE 巧用法宝:使用技巧全解析与优质插件推荐》

在日常撸代码的时候,相信兄弟们在IDEA 中用到不少插件,利用插件,不仅可以提高工具效率,撸起代码来,也格外的娃哈哈…… 一、IntelliJ IDEA 作为一个资深 Java 程序员,除了 IDEA 中默认的插件,我…

重学SpringBoot3-Reactive-Streams规范

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-Reactive-Streams规范 1. 什么是 Reactive-Streams 规范?2. Reactive-Streams 的核心组件2.1 Publisher(发布者)2.2 …

飞睿智能超宽带UWB音频传输模块,超低延迟数据传输,实时音频声音更纯净

在信息爆炸的时代,音频传输技术正以未有的速度发展,创新我们进入一个全新的听觉世界。今天,我们要探讨的,就是这场技术创新中的一颗璀璨明星——飞睿智能超宽带(UWB)音频传输模块。它以其独特的优势&#x…

光谱指标-预测含水量-多种特征提取方式

目录 1 介绍1.1 变量投影重要性(VIP)分析1.2. 灰色关联度(GRA)分析1.3. 皮尔逊相关性分析1.4 总结 2 GRA灰色关联度3 皮尔逊(Person)相关性4 变量投影重要性(Variable importance in projection,VIP)分析5 机器学习 1 …

webpack 老项目升级记录:从 node-sass 限制的的 node v8 提升至支持 ^node v22

老项目简介 技术框架 vue 2.5.17webpack 4.16.5"webpack-cli": "3.1.0""node-sass": "^4.7.2" 几个阶段 第一步:vue2 升级到最新 第一步:升级 vue2 至最新版本,截止到目前(2024-10-…

戴维南,叠加,稳态笔记

一点点学习笔记,仅做个人复习使用 节点电压分清电流电压源,电流源才能写在右边,容易混淆 叠加定理仅适用于线性电路,且不能用于计算功率,主要是方向,要看源的方向判断等效之后的,受控源不参与除源&#x…

DMVPN协议

DMVPN(Dynamic Multipoint VPN)动态多点VPN 对于分公司和分总公司内网实现通信环境下,分公司是很多的。我们不可能每个分公司和总公司都挨个建立ipsec隧道 ,而且如果是分公司和分公司建立隧道,就会很麻烦。此时我们需…

iPhone当U盘使用的方法 - iTunes共享文件夹无法复制到电脑怎么办 - 如何100%写入读出

效果图 从iPhone复制文件夹到windows电脑 步骤windows 打开iTunes通过USB连接iPhone和电脑手机允许授权iTunes中点击手机图标,进入到点击左边“文件共享”,在右边随便选择一个App(随意...)写入U盘:拖动电脑的文件&am…

随机抽取学号

idea 配置 抽学号 浏览器 提交一个100 以内的整数。,后端接受后,根据提供的整数,产生 100 以内的 随机数,返回给浏览器? 前端:提供 随机数范围 ,病发送请求后端:处理随机数的产生&…

信息安全工程师(66)入侵阻断技术与应用

#1024程序员节|征文# 前言 入侵阻断技术是网络安全主动防御的重要技术方法,其基本原理是通过对目标对象的网络攻击行为进行阻断,从而达到保护目标对象的目的。 一、入侵阻断技术的核心原理 入侵阻断技术的核心在于对网络攻击行为的实时检测和…

震撼叶珂“假胸”引发热议黄晓明无辜躺枪

【一场关于美的争议】在这个信息爆炸的时代,每一个细微的风吹草动都可能成为公众关注的焦点。近日,一则关于叶珂“假胸”的传闻在网络上掀起了轩然大波。有网友爆料称,叶珂的胸部整形过度,甚至“隆得比肚子还大,都垂到…

Node + HTML搭建自己的ChatGPT [基础版]

文章目录 明明外面的ChatGPT产品那么多了,为什么要在本地搭建自己的ChatGPT呢?整体架构流程1. 获取APIKey1.1 常见的AI模型1.2 为什么选DeepSeek1.3 怎么获取DeepSeek的APIKey1.3.1 注册并登录DeepSeek开放平台1.3.2 选择API keys1.3.3 创建API key1.3.4…

VSCode编译器改为中文

1. 通过快捷键设置中文 打开命令面板:按住键盘上的CtrlShiftP组合键,打开命令面板。 输入并设置语言:在命令面板中输入Configure Display Language。 点击Configure Display Language选项。 在弹出的语言选择列表中,选择zh-cn…

node.js下载安装以及环境配置超详细教程【Windows版本】

node安装以及环境变量配置 Step1:选择版本进行安装Step2:安装Node.jsStep3:环境配置Step4:检查node.js是否成功安装Step5:npm修改下载镜像 Step1:选择版本进行安装 Node.js 安装包及源码下载地址为 Node.…

基于Spring Boot的宿舍管理系统设计与实现(源码+定制+开发)宿舍信息管理平台、智能宿舍系统开发、学生宿舍管理平台设计、宿舍入住与信息管理

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

QT-使用QSS美化UI界面

一、QSS简介: Qt Style Sheet:Qt样式表,用来自定义控件外观的一种机制,可以把他类比成CSS(CSS主要功能与最终目的都是能使界面的表现与界面的元素分离)。QSS机制使应用程序也能像web界面那样随意地改变外观…

vue3移动端可同时上传照片和视频的组件

uni-app中的uni-file-picker可单独上传照片或视频,但不支持同时上传照片和视频。本篇博客使用image标签和video标签实现移动端(H5app小程序)中照片和视频的同时上传。 本篇博客采用的是照片和视频的单独上传,但可同时展示&#xf…

Qt 学习第 天:线程与多线程

1024程序员快乐,如果这博客让你学习到了知识,请给我一个免费的赞❤️ 一、创建界面文件 LCDnumber 二、创建mythread类,继承QObject 三、在MyThread.h文件做修改,并且加上函数声明 引入头文件,改变继承 #ifndef MY…

Nginx+Tomcat 动静分离

1. NginxTomcat 环境 Nginx 处理静态资源的优势同样可以应用在 Tomcat 环境中 。从实现方法上来说,NginxTomcat 环境的搭建思路与前面完成的 NginxApache 环境是完全相同的,只需要将 Nginx 与 Tomcat 的站点文档目录配置到同一目录下,利用 N…