对于数据异常值处理,我的理解是,这里的异常值不是代表数据出现的异常,而是对于你需要建立的模型来说,处于异常值。

比如你需要正太分布的数据,那么一些不符合正太分布,或者离群太远的值,可以更具你的需要去进行删除,这样你的模型效果就会更好。

简单统计分析

首先是简单的统计分析,比如通过最大最小值判断,什么意思呢?之前比赛遇到过一个二手车价格的问题,别的二手车都是几万到10几万不等,有一个要1000万的二手车。

1000万???,没错就是1000万的二手车,这样的数据,就算他是改装过后的玛莎拉蒂,是真实数据,但是这样的数据会影响模型的判断,所以在数据量大的时候,还是需要删除的。

df_train.max()  #最大值
df_train.min()  #最小值

3σ原则

在正态分布中,σ代表标准差,μ代表均值,x=μ即为图像的对称轴。3σ原则为

数值分布在(μ-σ,μ+σ)中的概率为0.6826,

数值分布在(μ-2σ,μ+2σ)中的概率为0.9544,

数值分布在(μ-2σ,μ+2σ)中的概率为0.9544。

可以认为,Y 的取值几乎全部集中在(μ-3σ,μ+3σ)]区间内,超出这个范围的可能性仅占不到0.3%。几乎是不可能事件。

import numpy as np
#设定法则的左右边界
left=num.mean()-3*num.std()
right=num.mean()+3*num.std()

#获取在范围内的数据
new_num=num[(left<num)&(num<right)]

这里数据是numpy的数组。

这些删除数据的方式,都有一定的依据,但是也不能完全按照这些依据,具体情况要看数据。

箱线图

箱线图是一种强大的,数据可视化工具,用于了解数据的分布。它将数据分成四分位数,并根据从这些四分位数得出的五个数字对其进行汇总:

  • 中位数:数据的中间值。标记为 Q2,描绘了第 50 个百分点。

  • 第一个四分位数:“最小非异常值”和中位数之间的中间值。标记为 Q1,描绘了第 25 个百分点。

  • 第三四分位数:“最大非异常值”和中位数之间的中间值。标记为 Q3,描绘了第 75 个百分点。

  • “最大非异常值”:按 (Q3 + 1.5*IQR) 计算。高于此值的所有值都被视为异常值。

  • “最小非异常值”:按 (Q1 – 1.5*IQR) 计算。低于此值的所有值都被视为异常值。

它还可以表示数据的对称性、偏度和分布。

请添加图片描述

sns.boxplot(x='diagnosis', y='area_mean', data=df)

上述三种是异常值的分析方法,而当找到异常值之后,我们因该如何处理这些异常值呢?

异常值方法处理

1.直接删除

如果数据量多的话,可以直接删除。参考上方3σ原则,或者根据实际情况,删除大于某个值的部分。

2.缺失值

当多缺省值进行处理。

3.修改为平均值

其实也是缺省值中的一种方法。

4.盖帽法

这种方法比较“轻柔”,不容易用力过猛。

5.分箱法

通过分箱,分桶这样的方式,在进行数据填充,会比较合理。

6不处理

这可能是异常值的特点,但是需要使用更加稳健的模型来修饰。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐