python异常值处理方法,python异常值检测常见方法
3西格玛原理常用于工程科学。我们已经在故障警告中使用了这个原理。数据是由传感器采集的,假设传感器符合正态分布。然后,在模型识别后,利用3sigma原理对异常数据进行精确定位。在实际应用中,k sigma中k的值可以根据业务场景来确定。
3sigma原理可以简单描述为:如果数据服从正态分布,异常值定义为一组结果中,其与平均值的偏差超过三倍标准差的值。也就是在正态分布的假设下,是平均值的三倍。
标准检查之外的值的概率很小(下面的公式),所以可以认为是异常值。
如果数据不服从正态分布,也可以用标准差远离平均值的多少倍来描述(这使得该原理适用于不同的业务场景,但只需根据经验确定k sigma中的K值即可,可视为阈值)。
代码如下:
#-*-编码:utf-8 -*-
#基于3sigma的异常值检测
将numpy作为np导入
进口熊猫作为pd
将matplotlib.pyplot导入为plt #导入图形库
n=3 # n*sigma
餐饮_销售= d:/python test code/dadm/chapter 3/chapter 3/demo/data/cataloging _ sale . xls #数据路径
data=PD . Read _ excel(catalog _ sale,index _ col=false) #读取数据
Data_y=data[u sales]
Data_x=data[u date]
ymean=np.mean(data_y)
ystd=np.std(data_y)
threshold1=ymean - n * ystd
threshold2=ymean n * ystd
离群值=[] #保存异常值
离群值x=[]
对于范围内的I(0,len(data_y)):
if(data _ y[I]threshold 1)(data _ y[I]threshold 2):
离群值. append(data_y[i])
outlier_x.append(data_x[i])
否则:
继续
打印( \ n异常数据如下:\ n )
打印(异常值)
打印(异常值_x)
plt.plot(数据x,数据y)
plt.plot(异常值_x,异常值, ro )
对于范围内的j(len(离群值)):
plt.annotate(outlier[j],xy=(outlier_x[j],outlier[j]),xytext=(outlier_x[j],outlier[j])
plt.show()
数据取自销量数据,结果如下:销量数据异常预警
参见github:snaildm/git-测试python代码和数据的github.com。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。