python异常值处理箱型图_Python数据处理:异常值处理方法之3原则

一、3σ原则定义 异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称离群点,异常值的分析也称为离群点的分析。 在进行机器学习过程中,需要对数据集进行异常值剔除或者修正,以便后续更好地进行信息挖掘。 对于异常值的处理,3σ原则是最常使用的一种处理数据异常值的方法。那么,什么叫3σ原则呢? 3σ原则,又叫拉依达原则,它是指假设一组检测数据中只含有随机误差,需要对其进行计算得到标准偏差,按一定概率确定一个区间,对于超过这个区间的误差,就不属于随机误差而是粗大误差,需要将含有该误差的数据进行剔除。 其局限性: 仅局限于对正态或近似正态分布的样本数据处理,它是以测量次数充分大为前提(样本>10),当测量次数少的情形用准则剔除粗大误差是不够可靠的。 在测量次数较少的情况下,最好不要选用该准则。 3σ原则:
  • 数值分布在(μ-σ,μ+σ)中的概率为0.6827
  • 数值分布在(μ-2σ,μ+2σ)中的概率为0.9545
  • 数值分布在(μ-3σ,μ+3σ)中的概率为0.9973
其中,μ为平均值,σ为标准差。 一般可以认为,数据Y的取值几乎全部集中在(μ-3σ,μ+3σ)区间内,超出这个范围的可能性仅占不到0.3%,这些超出该范围的数据可以认为是异常值。 对于正态分布而言,数据大概分布如图所示: python异常值处理箱型图_Python数据处理:异常值处理方法之3原则_第1张图片 深蓝色区域是距平均值小于一个标准差之内的数值范围。在正态分布中,此范围所占比率为全部数值之68%,根据正态分布,两个标准差之内的比率合起来为95%;三个标准差之内的比率合起来为99%。 二、3σ原则作用 异常值检测是机器学习中重要的一部分,它的任务是发现与大部分其他对象显著不同的对象。大部分机器学习过程都将这种差异信息视为噪声而丢弃。 三、Python实现步骤 具体步骤如下:
  1. 首先需要保证数据列大致上服从正态分布;

  2. 计算需要检验的数据列的平均值和标准差;

  3. 比较数据列的每个值与平均值的偏差是否超过3倍,如果超过3倍,则为异常值;

  4. 剔除异常值,得到规范的数据。

 1import numpy as np
2import pandas as pd
3from scipy import stats
4
5
6# 创建数据
7data = [1222,87,77,92,68,80,78,84,77,81,80,80,77,92,86,
8       76,80,81,75,77,72,81,72,84,86,80,68,77,87,
9       76,77,78,92,75,80,78,123,3,1223,1232]
10df = pd.DataFrame(data,columns = ['value'])
11
12# 计算均值
13u = df['value'].mean()
14
15# 计算标准差
16std = df['value'].std()
17
18print(stats.kstest(df, 'norm', (u, std)))
19# 此时,pvalue > 0.05,不拒绝原假设。因此上面的数据服从正态分布
20print('均值为:%.3f,标准差为:%.3f' % (u,std))
21print('------')
22
23
24# 定义3σ法则识别异常值
25# 识别异常值
26error = df[np.abs(df['value'] - u) > 3*std]
27# 剔除异常值,保留正常的数据
28data_c = df[np.abs(df['value'] - u) <= 3*std]
29
30# 输出正常的数据
31print(data_c)
32# 输出异常数据
33print(error)

你可能感兴趣的:(python异常值处理箱型图)