当前位置: 首页 > news >正文

【数据挖掘】3σ原则识别数据中的异常值(附代码)

写在前面:
首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。

路虽远,行则将至;事虽难,做则必成。只要有愚公移山的志气、滴水穿石的毅力,脚踏实地,埋头苦干,积跬步以至千里,就一定能够把宏伟目标变为美好现实。

今天给大家分享一个异常值处理的小方法,它的名字叫3σ原则,在实际项目中使用这个方法对异常数据进行处理,模型精度必须猛涨。多的不说,少的不唠,下面开始今天的教程。

1、引言

异常值是指数据样本中的一些数值明显偏离其他的样本值,这些偏离其他样本值的异常值也称离群点,异常值分析则也称为离群点分析。

在机器学习、数据分析、数据挖掘项目中,需要对数据集进行异常值处理(包括直接删除或者数据修正),这样处理的目的是方便后续更好地进行信息挖掘,减少噪声数据的干扰,提高分析的准确性[1]。

2、3σ原则

3σ原则,又叫拉依达原则,是一基于正态分布的数学原理,它假设一组检测数据中只含有随机误差,通过计算得到标准偏差σ,然后按一定概率确定一个区间,对于超过这个区间的误差,就不属于随机误差而是粗大误差,将含有粗大误差的数据进行剔除[2]。

在统计学中,如果一个变量服从正态分布,且它的均值是u, 标准差是σ,那么将有:

(1)68.27%的数据会落在 u ± σ 内,即数据分布在处于(u−σ, u+σ)中的概率是0.6827

(2)95.45%的数据会落在 u ± 2σ 内,即数据分布在处于(u−2σ, u+2σ)中的概率是0.9545

(3)99.73%的数据会落在 u ± 3σ 内,即数据分布在处于(u−3σ, u+3σ)中的概率是0.9973

通常认为,数据“Y”的取值几乎全部集中在(μ-3σ,μ+3σ)区间内,超出这个范围的可能性仅占不到0.3%,这些超出该范围的数据可以认为是异常值[2]。

(注:此部分内容为3σ原则的定义,已做了引用,无不良引导,不存在滥用原创的情况)

3、代码

3.1 数据

import numpy as np  
import matplotlib.pyplot as plt  
from scipy.stats import lognorm  
import pandas as pd# 设置参数  
s = 0.5  # 形状参数(σ),较小的值会导致更重的右尾  
mean = 0  # 对数正态分布的底数(μ)对应的对数均值  
scale = np.exp(s**2)  # 尺度参数(exp(σ^2)),确保对数正态分布的方差正确  
n_samples = 1000  # 样本数量  # 生成对数正态分布数据  
data = lognorm.rvs(s=s, scale=scale, size=n_samples)  # 写入excel
df = pd.DataFrame(data)
df.to_excel("data.xlsx", index=False, header=None)# 绘制直方图  
plt.hist(data, bins=30, density=True, alpha=0.6, color='g')  # 绘制对数正态分布曲线作为参考  
xmin, xmax = plt.xlim()  
x = np.linspace(xmin, xmax, 100)  
pdf_values = lognorm.pdf(x, s=s, scale=scale)  
plt.plot(x, pdf_values, 'k', linewidth=2, label='Lognormal Distribution (s={})'.format(s))  # 设置图表标题和坐标轴标签  
plt.title('Lognormal Distribution with Long Right Tail (s={})'.format(s))  
plt.xlabel('Value')  
plt.ylabel('Probability Density')  
plt.legend()  # 显示图形  
plt.grid(True)  
plt.show()

数据分布图如下:

3.2 3σ代码

def three_sigma(data_df, column):out_index = []mean_value = data_df[column].mean()        # 求平均值std_value = data_df[column].std()          # 求标准差# print("均值和标准差", mean_value, std_value)lower_bound = mean_value-3*std_valueupper_bound = mean_value+3*std_valuerule = (data_df[column] < lower_bound) | (data_df[column] > upper_bound)  # 位于(u-3std,u+3std)区间的数据是正常的,不在这个区间的数据为异常的out = data_df[column].index[rule]# print("异常索引:", out)out_index += out.tolist() data_df.drop(out_index, inplace=True)return data_df

上面的代码做了单列数据的异常剔除,如果需要多列异常剔除,需要对代码进行改写。

4、优缺点

4.1、3σ原则的优点

1.简单易懂:3σ原则基于标准差的观念,提供了一个直观且易于理解的判断标准。通过计算数据的平均值和标准差,并与3σ进行比较,可以快速判断数据是否处于正常范围内。

2.科学性和客观性:由于3σ原则基于统计学原理,其判断具有一定的科学性和客观性。它依赖于数据的统计特性,而不是主观的、经验性的判断。

3.有效检测异常值:根据正态分布的特性,大约有99.73%的数据落在u±3σ范围内。因此,当一个数据点落在这一范围之外时,可以初步判断为异常值。

4.2、3σ原则的缺点

1.对样本量的依赖:3σ原则的有效性依赖于样本量的大小。当样本量较小时,使用3σ原则进行异常值检测可能不够可靠。因为小样本数据可能无法准确反映总体的分布特性。

2.对非正态分布数据的限制:3σ原则主要适用于具有正态分布或近似正态分布特性的数据。对于非正态分布的数据,3σ原则可能无法有效检测异常值,甚至可能出现误判。

写在最后

在实际的数据挖掘项目中,请结合自身数据情况,酌情使用3σ原则。

参考资料

[1]https://zhuanlan.zhihu.com/p/572327280?utm_id=0
[2]https://zhidao.baidu.com/question/585044313.html
[3]https://www.sohu.com/a/365218206_387904
[4]https://blog.csdn.net/Jormungand_V/article/details/109775367
[5]https://blog.51cto.com/u_15834745/6011865
[6]https://www.cnblogs.com/Tree0108/p/12116099.html

在这里插入图片描述

请扫码关注下方的公众号,让我们共同进步吧。
在这里插入图片描述

相关文章:

【数据挖掘】3σ原则识别数据中的异常值(附代码)

写在前面&#xff1a; 首先感谢兄弟们的订阅&#xff0c;让我有创作的动力&#xff0c;在创作过程我会尽最大能力&#xff0c;保证作品的质量&#xff0c;如果有问题&#xff0c;可以私信我&#xff0c;让我们携手共进&#xff0c;共创辉煌。 路虽远&#xff0c;行则将至&#…...

人眼是如何看到物体的

我在试图理解人眼如何观察到物体的&#xff0c;发现没有解释。本来我想这应该跟照相机照相的结果一样&#xff0c;但是发现&#xff0c;照相机也不对劲&#xff0c;没有理由能成像啊。 因为物体在散射光的时候&#xff0c;假设散射的光在局部是平行光&#xff0c;那么物体散射…...

vue打包时报错文件包过大

1.问题&#xff1a;npm run build 之后出现 2. 翻译之后意思就是某块过大 3. 解决办法&#xff1a;在vite.config.ts文件上添加 build: { chunkSizeWarningLimit: 1600, }, 4.最终打包...

预编码算法(个人总结)

引言 预编码算法是现代无线通信系统中的关键技术&#xff0c;特别是在多输入多输出&#xff08;MIMO&#xff09;系统中。它们通过在发送端对信号进行处理&#xff0c;减少干扰并提高信道容量。这种技术广泛应用于5G、Wi-Fi和卫星通信系统中。本教程将详细介绍预编码算法的背景…...

【重学C语言】十七、预处理指令

【重学C语言】十七、预处理指令 预处理指令预定义宏`#define` 宏定义示例注意事项特殊符号条件编译头文件包含`#pragma`预处理指令 C语言中的预处理指令(Preprocessor Directives)是一种特殊的指令,它们在编译过程的早期阶段(即实际编译之前)被预处理器(Preprocessor)处…...

SQL注入的危害和原理

在Web应用开发中&#xff0c;SQL注入是一种常见的安全漏洞&#xff0c;它允许攻击者通过注入恶意的SQL语句来执行非法操作&#xff0c;甚至获取敏感数据。本篇博客将详细解释SQL注入的危害和原理&#xff0c;并提供一些解决方案&#xff0c;以帮助新人快速理解并避免这种安全威…...

Unity2D横版摄像机跟随

在Unity2D横版游戏中&#xff0c;摄像机跟随是一个非常重要的功能。一个流畅的摄像机跟随系统可以让玩家更好地沉浸在游戏世界中。本文将介绍如何在Unity中实现2D横版摄像机跟随&#xff0c;并分享一些优化技巧。 一、准备工作 在开始实现摄像机跟随之前&#xff0c;请确保您…...

Practicing Version Control

Part A 新建一个文件夹Git&#xff0c;然后进入文件夹: Windows: 在这个文件夹中右键 > Open Git Bash hereMac: 运行终端&#xff0c;打cd 空格&#xff0c;然后将文件夹拖入终端&#xff0c;按 return 从 Github 上复制 HTTPS&#xff0c;然后 git clone https://githu…...

新宏观范式和产业趋势下,纷享销客如何助力企业出海?

出海&#xff0c;已不再是企业的“备胎”&#xff0c;而是必须面对的“大考”&#xff01;在这个全球化的大潮中&#xff0c;有的企业乘风破浪&#xff0c;勇攀高峰&#xff0c;也有的企业在异国他乡遭遇了“水土不服”。 面对“要么出海&#xff0c;要么出局”的抉择&#xff…...

安装zookeeper

一、搭建前准备 192.168.1.99 sdw1 192.168.1.98 sdw2 192.168.1.97 sdw3 二、搭建 1、各主机修改/etc/hosts&#xff0c;/etc/hostname文件 /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhos…...

深入分析 Android Activity (二)

文章目录 深入分析 Android Activity (二)1. Activity 的启动模式&#xff08;Launch Modes&#xff09;1.1 标准模式&#xff08;standard&#xff09;1.2 单顶模式&#xff08;singleTop&#xff09;1.3 单任务模式&#xff08;singleTask&#xff09;1.4 单实例模式&#xf…...

数据结构——经典链表OJ(二)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 点击主页&#xff1a;optimistic_chen和专栏&#xff1a;c语言&#xff0c; 创作不易&#xff0c;大佬们点赞鼓…...

文件IO(三)

文件IO&#xff08;三&#xff09; 左移右移Linux的man 手册文件IO打开文件操作文件关闭文件 caps lock开灯关灯读取按键文件IO操作目录文件打开目录文件操作目录文件 库动态库和静态库的优缺点创建静态库创建动态库 按下右ctrl键 亮灭灯 左移右移 Linux的man 手册 文件IO 打开…...

单实例11.2.0.3迁移到RAC11.2.0.4_使用RMAN 异机恢复

保命法则&#xff1a;先备份再操作&#xff0c;磁盘空间紧张无法备份就让满足&#xff0c;给自己留退路。 场景说明&#xff1a; 1.本文档的环境为同平台、不同版本&#xff08;操作系统版本可以不同&#xff0c;数据库小版本不同&#xff09;&#xff0c;源机器和目标机器部…...

JavaScript第四讲:函数,作用域,运算符

前言 在JavaScript的广阔天地中&#xff0c;函数、作用域、算术运算符和逻辑运算符是构成代码世界的基石。它们各自扮演着不同的角色&#xff0c;却又紧密相连&#xff0c;共同编织出丰富多彩的程序逻辑。无论是编写一个简单的网页交互&#xff0c;还是构建一个复杂的应用程序…...

IDEA中,MybatisPlus整合Spring项目的基础用法

一、本文涉及的知识点【重点】 IDEA中使用MybatisPlus生成代码&#xff0c;并使用。 Spring整合了Mybatis框架后&#xff0c;开发变得方便了很多&#xff0c;然而&#xff0c;Mapper、Service和XML文件&#xff0c;在Spring开发中常常会重复地使用&#xff0c;每一次的创建、修…...

从不同角度看如何让大模型变得更聪明呢?

算法创新&#xff0c;从代码上优化大模型&#xff0c;可以采取一系列策略来提升其性能和效率。 算法优化&#xff1a;对模型的算法进行精细调整&#xff0c;如改进神经网络架构&#xff0c;使用更高效的层&#xff08;如深度可分离卷积&#xff09;&#xff0c;或者优化递归神经…...

Buffer Pool运行机制理解

Buffer Pool机制理解 一、为什么使用Buffer Pool&#xff1f; 众所周知&#xff0c;磁盘数据是以数据页的形式来去读取的&#xff0c;一个数据页默认大小 16K&#xff0c;也就是说你本意只想读取一行数据&#xff0c;但是它会给你加载一页的数据到buffer pool里面。这样的话就…...

windows配置dns访问git , 加快访问速度保姆级教程

设置 DNS 访问 Git 需要修改电脑的 DNS 配置。下面是具体的操作流程&#xff1a; 第一步&#xff1a;打开命令提示符或终端窗口 在 Windows 系统中&#xff0c;可以按下 Win R 组合键&#xff0c;然后输入 “cmd”&#xff0c;按下 Enter 键打开命令提示符窗口。在 macOS 或 …...

Solidity学习-投票合约示例

以下的合约有一些复杂&#xff0c;但展示了很多Solidity的语言特性。它实现了一个投票合约。 当然&#xff0c;电子投票的主要问题是如何将投票权分配给正确的人员以及如何防止被操纵。 我们不会在这里解决所有的问题&#xff0c;但至少我们会展示如何进行委托投票&#xff0c;…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...

CSS 工具对比:UnoCSS vs Tailwind CSS,谁是你的菜?

在现代前端开发中&#xff0c;Utility-First (功能优先) CSS 框架已经成为主流。其中&#xff0c;Tailwind CSS 无疑是市场的领导者和标杆。然而&#xff0c;一个名为 UnoCSS 的新星正以其惊人的性能和极致的灵活性迅速崛起。 这篇文章将深入探讨这两款工具的核心理念、技术差…...

6.9本日总结

一、英语 复习默写list11list18&#xff0c;订正07年第3篇阅读 二、数学 学习线代第一讲&#xff0c;写15讲课后题 三、408 学习计组第二章&#xff0c;写计组习题 四、总结 明天结束线代第一章和计组第二章 五、明日计划 英语&#xff1a;复习l默写sit12list17&#…...

LTR-381RGB-01RGB+环境光检测应用场景及客户类型主要有哪些?

RGB环境光检测 功能&#xff0c;在应用场景及客户类型&#xff1a; 1. 可应用的儿童玩具类型 (1) 智能互动玩具 功能&#xff1a;通过检测环境光或物体颜色触发互动&#xff08;如颜色识别积木、光感音乐盒&#xff09;。 客户参考&#xff1a; LEGO&#xff08;乐高&#x…...

npm install 相关命令

npm install 相关命令 基本安装命令 # 安装 package.json 中列出的所有依赖 npm install npm i # 简写形式# 安装特定包 npm install <package-name># 安装特定版本 npm install <package-name><version>依赖类型选项 # 安装为生产依赖&#xff08;默认&…...

Clickhouse统计指定表中各字段的空值、空字符串或零值比例

下面是一段Clickhouse SQL代码&#xff0c;用于统计指定数据库中多张表的字段空值情况。代码通过动态生成查询语句实现自动化统计&#xff0c;处理逻辑如下&#xff1a; 从系统表获取指定数据库&#xff08;替换your_database&#xff09;中所有表的字段元数据根据字段类型动态…...

浅谈未来汽车电子电气架构发展趋势中的通信部分

目录 一、引入 1.1市场占比演化 1.2未来发展趋势 二、纯电动汽车与传统汽车的区别 2.1 纯电车和燃油车的架构&#xff08;干货&#xff09; 2.2 新能源汽车的分类 ⚡ 1. 纯电动汽车&#xff08;BEV&#xff09; &#x1f50b; 2. 插电式混合动力&#xff08;PHEV&#…...