python大数据之异常值处理


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

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

简单统计分析

首先是简单的统计分析,比如通过最大最小值判断,什么意思呢?之前比赛遇到过一个二手车价格的问题,别的二手车都是几万到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不处理

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值