📜  检测数据中异常值的四分位距

📅  最后修改于: 2022-05-13 01:54:58.557000             🧑  作者: Mango

检测数据中异常值的四分位距

与样本数据集上的整体模式不同的观察值称为异常值。

异常值:
异常值可能表明实验错误、测量的可变性或异常。一个人的年龄可能被错误地记录为 200 而不是 20 岁。这样的异常值绝对应该从数据集中丢弃。
然而,并不是所有的异常值都是坏的。一些异常值表示数据与其他数据显着不同。例如,它可能表示银行欺诈或罕见疾病等异常情况。

异常值的意义:

  • 异常值严重影响数据集的均值和标准差。这些可能会在统计上给出错误的结果。
  • 大多数机器学习算法在存在异常值的情况下都不能很好地工作。因此,需要检测和去除异常值。
  • 异常值在欺诈检测等异常检测中非常有用,其中欺诈交易与正常交易非常不同。

什么是四分位距 IQR?

IQR 用于通过将数据集划分为四分位数来测量变异性。数据按升序排列,分成4等份。 Q1、Q2、Q3 称为第一、第二和第三四分位数是分隔 4 个相等部分的值。

  • Q1 代表数据的第 25 个百分位。
  • Q2 代表数据的第 50 个百分位。
  • Q3 代表数据的第 75 个百分位。

如果一个数据集有2n / 2n+1 个数据点,那么
Q1 = 数据集的中位数。
Q2 = n 个最小数据点的中位数。
Q3 = n 个最高数据点的中位数。

IQR 是第一和第三四分位数之间的范围,即 Q1 和 Q3: IQR = Q3 – Q1 。低于Q1 – 1.5 IQR或高于Q3 + 1.5 IQR的数据点是异常值。

例子:
假设数据为 6、2、1、5、4、3、50。如果这些值代表午餐吃的薄饼数量,那么 50 显然是异常值。
使用Python逐步检测此数据集中的异常值:

第 1 步:导入必要的库。

import numpy as np 
import seaborn as sns

步骤2:获取数据并按升序对其进行排序。

data = [6, 2, 3, 4, 5, 1, 50]
sort_data = np.sort(data)
sort_data

输出:

array([ 1,  2,  3,  4,  5,  6, 50])

第 3 步:计算 Q1、Q2、Q3 和 IQR。

Q1 = np.percentile(data, 25, interpolation = 'midpoint') 
Q2 = np.percentile(data, 50, interpolation = 'midpoint') 
Q3 = np.percentile(data, 75, interpolation = 'midpoint') 
  
print('Q1 25 percentile of the given data is, ', Q1)
print('Q1 50 percentile of the given data is, ', Q2)
print('Q1 75 percentile of the given data is, ', Q3)
  
IQR = Q3 - Q1 
print('Interquartile range is', IQR)

输出:

Q1 25 percentile of the given data is, 2.5
Q1 50 percentile of the given data is, 4.0
Q1 75 percentile of the given data is, 5.5
Interquartile range is 3.0

第 4 步:分别找到 Q1 – 1.5 IQR 和 Q3 + 1.5 IQR 的下限和上限。

low_lim = Q1 - 1.5 * IQR
up_lim = Q3 + 1.5 * IQR
print('low_limit is', low_lim)
print('up_limit is', up_lim)

输出:

low_limit is -2.0
up_limit is 10.0

步骤 5:大于上限或小于下限的数据点为异常值

outlier =[]
for x in data:
    if ((x> up_lim) or (x

输出:

outlier in the dataset is [50]

第 6 步:绘制箱线图以突出显示异常值。

sns.boxplot(data)

第 7 步:以下代码也可用于计算 IQR

from scipy import stats
IQR = stats.iqr(data, interpolation = 'midpoint')
IQR

输出:

3.0

结论: IQR 和箱线图是检测数据异常值的有效技术。