常用去除离群值的算法!

使用Python检测并删除离群值 离群值是一个数据项/对象,它明显偏离其余的(所谓的正常)对象。它们可能由测量或执行错误引起。离群点检测的分析被称为离群点挖掘。检测离群值的方法有很多,删除过程与从pandas的数据框中删除数据项相同。 阅读详情
AI摘要

本文介绍了三种常见的离群值处理方法:MAD算法、3σ法则及百分位法。MAD算法利用绝对中位值偏差识别离群值;3σ法则依据均值与标准差进行判断;百分位法则通过设定阈值排除极端数据。

1.引言:

       数据预处理的方法主要包括去极值、标准化、中性化。那么这里介绍几个常用的去离群值的方法,所谓离群值就是异常值,这个和极值其实并不一样。常用的剔除离群值的方法有MAD、3\sigma、百分位法。参考资料:数据预处理(上)之离群值处理、标准化、数据预处理(下)之中性化

2.MAD算法

        MAD,即median absolute deviation,可译为绝对中位值偏差。其大致思想是通过判断每一个元素与中位值的偏差是否处于合理的范围内来判断该元素是否为离群值。具体方法如下:

(1)计算所有元素的中位值:X_{median}

(2)计算所有元素与中位值的绝对偏差:bias = |X_{i} - X_{median}|

(3)取得绝对偏差的中位值:MAD = bias_{median}

(4)确定参数n,则可以对所有的数据作如下调整:

在这里我没有调整离群值,而是直接将其剔除了。

代码如下:

import numpy as np

# MAD法: media absolute deviation
def MAD(dataset, n):
    median = np.median(dataset)  # 中位数
    deviations = abs(dataset - median)
    mad = np.median(deviations)

    remove_idx = np.where(abs(dataset - median) >  n * mad)
    new_data = np.delete(dataset, remove_idx)

    return new_data

2.3\sigma法

      3\sigma法又称为标准差法。标准差本身可以体现因子的离散程度,和MAD算法类似,只是3\sigma法用到的不是中位值,而是均值,并且n的取值为3,代码如下:

# 3sigma法
def three_sigma(dataset, n= 3):
    mean = np.mean(dataset)
    sigma = np.std(dataset)

    remove_idx = np.where(abs(dataset - mean) > n * sigma)
    new_data = np.delete(dataset, remove_idx)

    return new_data

3.百分位法

       百分位计算的逻辑是将因子值进行升序的排序,对排位百分位高于97.5%或排位百分位低于2.5%的因子值,类似于比赛中”去掉几个最高分,去掉几个最低分“的做法。代码如下:这里参数采用的是20%和80%,具体取值,还需具体情况具体分析。

# 百分位法:原始参数 min=0.025, max=0.975
def percent_range(dataset, min= 0.20, max= 0.80):
    range_max = np.percentile(dataset, max * 100)
    range_min = -np.percentile(-dataset, (1 - min) * 100)

    # 剔除前20%和后80%的数据
    new_data = []
    for value in dataset:
        if value < range_max and value > range_min:
            new_data.append(value)
    return new_data

这三个方法思路简单,易于实现,但是只能处理一维数据,接下来,再考虑更复杂但却更精准的可适用于多维数据的离群值处理方法!参考资料:离群点检测---基于kNN的离群点检测、LOF算法和CLOF算法

数据平滑和离群值检测 % This LaTeX was auto-generated from MATLAB code. % To make changes, update the MATLAB code and export to LaTeX again. \documentclass{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \use... 阅读详情

相关推荐

GEO生信数据挖掘(四)数据清洗(离群值处理、低表达基因、归一化、log2处理)

检索到目标数据集后,开始数据挖掘,本文以阿尔兹海默症数据集GSE1297为例,数据清洗(离群值处理、低表达基因、归一化、log2处理)

zzh1464501547的博客 1万+

离群值的处理

离群值的产生 1.总体固有 2.由实验,观测等产生 离群值的处理 保留,修正,剔除,替补… 检验方法的选择 1.限定检出个数&lt;=1时: n method n&lt;31 Grubbs法 n&gt;30 正态,偏度-峰度检验 n&gt;30 非正态,Grubbs法 2.限定检出个数&gt;1时: n method n&lt;31 Dixon法 n...

weixin_43865392的博客 3750

3D 点云数据预处理实战:PCL 库 5 大滤波算法对比与 Open3D 可视化

本文详细对比了PCL库中5种3D点云数据预处理滤波算法的原理与性能,包括体素网格滤波、统计离群值去除等,并结合Open3D可视化展示效果。通过实战代码示例和性能测试数据,帮助开发者高效处理点云噪声问题,提升自动驾驶、工业检测等应用的精度与效率。

weixin_34101784的博客 359

4.GraphPad常见统计分析方法

统计分析方法

xiaoheijiayoubbs的博客 1万+

【重新定义matlab强大系列三】MATLAB清洗离群数据(查找、填充或删除离群值)

清洗离群数据允许以交互方式处理数据中的离群值。该任务会自动为实时脚本生成 MATLAB代码。

左手の明天的博客 4016

点云离群点剔除 — open3d python

点云离群点剔除 — open3d python,三种点云离群点剔除方法,含数据与源码。

叶子的博客 1万+

多种算法集成进行数据预处理去除噪声,异常值检测清洗,时间序列数据平滑处理

摘要:本文介绍了一个数据平滑处理工具类SmoothUtil,包含多种数据预处理算法:1) 五点移动平均平滑,适用于趋势平缓数据;2) 基于中位数绝对偏差(MAD)的离群值检测,对异常值更稳健;3) 滑动窗口MAD检测,适用于非平稳数据;4) 中值滤波,能有效抑制椒盐噪声;5) 高斯滤波,保留数据细节较好。工具类采用静态方法设计,支持double和Float数据类型,包含边界处理逻辑,适用于气象数据、实验数据等时间序列的预处理,提供噪声去除和异常检测功能。注意事项包括参数选择、边界处理等,示例代码展示了主要方

2303_78263863的博客 823

16、虹膜模式识别旋转检测新算法与二维跳跃蛙算法中的离群值去除

本文介绍了虹膜模式识别中的旋转检测新算法和二维跳跃蛙算法在带噪光度立体问题中的应用。前者基于傅里叶变换与代数计算,具有高鲁棒性;后者通过局部区域优化解决大规模非线性优化问题,并结合两种离群值去除方法显著提升重建质量。文章详细阐述了算法原理、步骤、歧义处理及实验效果,展示了其在计算机视觉、医学图像和遥感等领域的应用潜力,并对未来研究方向进行了展望。

app77的博客 46

PCL_Tutorial2-4.3.1-点云基于半径的异常值去除

4.3.1-点云基于半径的异常值去除异常值去除介绍函数详解处理结果代码链接 异常值去除 离群值是孤独的点,像恼人的蚊子一样在云中四处传播。 它们是传感器误差的产物,该误差会在不应该存在的地方记录测量结果。 异常值被认为是不希望有的噪声,因为它们会在计算中引入误差,例如正常估计。 因此,将它们从云中删除不仅会提高计算速度(因为减少点数会减少计算时间,因为我们将在下采样中看到),还会帮助我们获得更精确的值。 介绍 基于半径的异常值移除是所有方法中最简单的方法。 您必须指定一个搜索半径和一个点所必须具有的最小邻居

qq_34792438的博客 2562

PCL 点云离群值去除(StatisticalOutlierRemoval过滤器)

StatisticalOutlierRemoval过滤器是一种常用的点云滤波方法,它的作用是去除点云中的异常离群点。该滤波器基于统计学原理,通过计算每个点与其邻近点的统计参数,判断该点是否为离群点。

weixin_43896283的博客 1296

15、分类记录数据库中的离群值检测

本文介绍了一种在分类记录数据库中检测离群值的有效方法。该方法基于高置信度关联规则,定义了离群值程度的概念,并提出了高效的检测算法。算法包含快速路径和两个加速装置,显著提高了检测效率。实验表明,该方法在准确性和运行时间方面均表现优异,与暴力算法相比至少快十倍,并且能够更准确地识别出数据中的离群值。

beta5的博客 46

PCL_Tutorial2-4.3.2-点云基于统计的异常值去除

4.3.2-点云基于统计的异常值去除介绍代码详情处理结果代码链接 介绍 统计离群值删除过程更加精细。 首先,对于每个点,计算到其K个邻居的平均距离。 然后,如果我们假设结果是具有均值μ和标准偏差σ的正态(高斯)分布,则可以认为删除所有均值距离不在全局均值加偏差范围之内的点是安全的。 基本上,它对相邻点之间的距离进行统计分析,并修剪所有不被视为“正常”的部分(您可以使用算法的参数定义什么是“正常”)。 代码详情 #include <pcl/io/pcd_io.h> #include <pcl

qq_34792438的博客 2320

12、具有离群值鲁棒性的主成分分析

本文探讨了在存在离群值情况下具有鲁棒性的主成分分析(PCA)方法。首先介绍了通过低秩与稀疏成分分解实现离群值鲁棒性的理论基础及优化模型,随后详细分析了基于稳健统计的经典方法,包括基于影响、概率(MVT和M-估计器)以及共识(RANSAC)的离群值检测技术,并对比了各类方法的优缺点与适用场景。文章还结合人脸阴影去除实例展示了PCP方法的有效性,并总结了实际应用中的操作步骤、注意事项及未来发展趋势,为处理含噪声与异常值的高维数据提供了系统性解决方案。

svm4gardener的博客 39

python:删除离群值(每一行为一类数据)

删除有多行字符串的json文件中的离群值 def processHold(eachsubject,directory,newfile): filename = 'CMUDataCol/Hold/subject{0}.json'.format(eachsubject) # 原文件 with open(filename, 'r') as f: for jsonstr in ...

fwt1226的博客 2055

PCL常用滤波算法的数学原理与实现

通过理解这些滤波算法的数学原理,你可以更合理地选择参数和组合算法,从而在点云处理中获得更好的效果。PCL(点云库)中常用的滤波算法是处理三维点云数据的基础工具,理解它们的数学原理有助于你在实际应用中做出更合适的选择。( d_i ) 是点 ( P ) 到邻居点 ( P_i ) 的距离,( \sigma ) 是高斯函数的标准差。对于每个点 ( P ),计算它到所有邻居点的平均距离 ( d ),假设所有点的平均距离 ( d ) 服从。其中 ( N ) 是体素内的点数量,( P_i ) 是体素内的点。

行知SLAM 846

从理论到代码:手把手教你用Matlab复现MMC的HSS阻抗模型(附避坑指南)

本文详细介绍了如何使用Matlab复现MMC的HSS阻抗模型,涵盖谐波状态空间(HSS)理论、代码实现步骤及常见问题解决方案。通过谐波线性化和序阻抗建模技术,帮助工程师准确分析MMC的阻抗特性,并提供避坑指南以解决矩阵维度错误、收敛性问题和频域转换陷阱等难点。

weixin_42561040的博客 356

光滑噪声数据常用的方法_MATLAB光滑数据的方法总结

MATLAB光滑数据的方法总结对于数据的光滑,我开始理解的不透彻,直接用了一些MATLAB、Python的内置函数以后,没有理解其内在本质,仔细看了一些技术文章之后,了解了其基本原理,希望总结出来,可以以后用到几种常用信号平滑去噪的方法含普通噪声的数据的光滑普通噪声即随机的噪声,是一些比较随机的波动。我们可以做的只是让这些波动变得平均。要去除背景还得用测量的结果减去背景才行。MATLAB内置了很多...

weixin_31368213的博客 1907

UE4 - 河流流体插件Fluid Flux

Fluid Flux可以模拟一定区域内的流体效果,由于使用顶视图所Capture的Heightfield信息,所以只支持室外开阔场景,不支持洞穴等室内场景;

GT的虚幻引擎文档 6666

Spark ML 去除噪声(离群值)的方法

------------------1.Bucketizer---------------------------------- 分箱(分段处理)将(连续数值)转换为离散类别。-- 应用(去除离群值) ------------------2.QuantileDiscretizer(分位数离散化)--------------------------------- 和Bucketizer(分箱处理)一样:将连续数值特征转换为离散类别特征。实际上Class QuantileDiscretizer extends

图特摩斯科技-博客 4222

手机如何高效辅助林业调查

手机如何高效辅助林业调查 很多林业工作者将栅格类型的地形图处理后导入平板电脑,在林地使用平板电脑加载小班矢量图,辅助林业调查。但是,如果没有地形图底图,这种方法可能就有难度,而且最重要的是,大部分林地工作者没有能力配置平板电脑。大凡林业基层工作者在林地调查时,除调查记录本等部分纸质材料外,都必然携带手机和水杯,此外其他设备已经成为累赘,尤其是炎热的夏季在杂灌丛生的林地进行调查作业。因此,使用手机...

xu780820的博客 3077

Hermes-Agent-完整指南

Hermes Agent 是由 **Nous Research** 开发的一款**自我改进型 AI Agent**,具有内置的学习闭环系统。它的核心理念是"一个与你共同成长的 Agent"。- 能够从经验中创建技能(Skill-Learning Automated),在使用过程中自我改进, 跨会话持久记忆, 深度用户建模

liu_zhiyi的博客 3024

点云滤波算法

这种方法假设点云的点分布应接近高斯分布。算法计算每个点与其邻近点的距离,然后根据这些距离的平均值和标准差来确定是否将某个点视为离群值。具体来说,如果一个点的距离大于平均距离加上几倍标准差(通常是一个可调参数),这个点就会被移除。这种方法通过在数据中创建一个三维网格(体素),并在每个体素内部用体素中所有点的质心代替这些点来简化点云。这不仅帮助去除噪声,还能有效减少点云数据的规模,从而提高后续处理的效率。此算法基于每个点周围的邻居数量来过滤噪声。具体操作是设定一个半径,在这个半径内统计每个点的邻居数量。

weixin_42659497的博客 2137

运维系列【仅供参考】:微信版本过低 使用CheatEngine绕过

微信版本过低 使用CheatEngine绕过

weixin_54626591的博客 2132
上一篇: 地理坐标系之间的转换及经纬度、方位角、距离之间的计算!
下一篇: 图像的EXIF信息简介及获取!
dulingwen
博客等级 码龄9年 519粉丝 72原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值