利用差分去除突变值

今天同学问我去除一堆数据里的异常值(突然上升、突然下降)有什么好的算法,并附有一张截图:
这里写图片描述
这些突然变化的点就是需要检测出来 的点。

针对这个问题,首先想到的是出现奇异值的时候与前一个点和后一个点是有很大的变化的,因此,用差分应该是管用的,差分后的结果是:

这里写图片描述

只需要设置一个阈值,就可以将大部分的‘变异值’过滤掉

本文中设置的阈值是3和-3,只有前一个差分值和后一个差分值是一正一负,或者是一负一正的情况下才能认为是发生了突变,具体的程序如下所示:

length = len(d_diff)

temp = []
for i in range(length-1):
    if d_diff[i]>3 and d_diff[i+1]<-3:
        #temp.append(i+1)
        print i+1
        
    if d_diff[i]<-3 and d_diff[i+1]>3:
        #print i+1
        temp.append(i+1)
        
a = data.drop(temp)

过滤后的结果如下所示:

这里写图片描述

从图中对比可得,通过引入差分过滤方式,可以快速有效地将大部分的异常值删除并记录下来。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值