异常值&离群点检测算法

您所在的位置:网站首页 四分位数极差是什么意思呀 异常值&离群点检测算法

异常值&离群点检测算法

2024-04-10 22:16| 来源: 网络整理| 查看: 265

一、四分位距检测法介绍

在数据处理的过程中,异常值的检测和处理是一个较小的分支,检测的方法也有很多种,本文只介绍其中一种:四分位距法,虽然常见但功能强大。

这种方法是利用箱线图的四分位距(IQR)对异常值进行检测,也叫Tukey`s  test。其提供了识别异常值的一个标准:异常值通常被定义为小于QL-1.5IQR 或QU+1.5IQR。

QL:下四分位数,表示全部观察值中有四分之一的数据取值比它小;QU:上四分位数,表示全部观察值中有四分之一的数据取值比它大;IQR:四分位间距,是上四分位数QU与下四分位数QL之差,期间包含了全部观察值的一半。

其中

最小估计值便为:QL - k * IQR

最大估计值便为:QU + k * IQR

k=1.5(中度异常)

k=3(重度异常)

正常数据的阈值即为k倍的四分位距外的数据判定为异常数据。

总结:箱线图依据实际数据绘制,没有对数据作任何限制性要求(比如数据要服从某某分布),它只是真实直观的表现数据分布的本来面貌;另一方面,箱线图判断异常值的标准以四分位数和四分位距为基础,四分位数具有一定的鲁棒性:多大25%的数据可以变得任意远而不会很大的扰动四分位数,所以异常值不能对这个标准施加影响。由此可见,箱线图识别异常值的结果比较客观,在识别异常值方面具有一定的优越性。

二、python实现

1、画图查看

我们先构造一个随机数列

import numpy as np # 生成随机数列列表 data = list(np.random.randint(30,60,50)) # 往随机数列列表中插入两个较大值,作为异常值 data.append(123) data.append(89) import matplotlib.pyplot as plt # 先观察折线图 plt.plot(data)

折线图如下,最后添加的两个异常值较为明显

(图为后补) 

箱线图如下,

plt.boxplot(data)

2、利用numpy库np.percentile计算四分位数

import numpy as np np.percentile(data,[25,50,75]) >>> array([41., 49., 55.]) #对应的分别为下四分位数、中位数、上四分位数



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3