数据挖掘中的异常值分析

数据挖掘中异常值分析是保证数据质量的前提,它在数据处理的阶段是数据探索阶段,总之,找出数据的异常值,有利于我们最终得出的模型的稳定性。

异常值分析主要有三种方法:

1.简单的统计量分析:

   我们可以先对采集到的数据做一个描述性的估计,最常用的方法就是最大值与最小值.用来判断这个变量是否超出常规的人们的理解等,你比如说,我们可以对一个人的年龄的属性列进行统计,假设得到的年龄最小值为-1,最大值为130.这显然是不符合常规的,在我们数据的异常值分析阶段是要pass掉的/

2.箱型图分析

  箱型图是判断是判断数据的异常值的最为直观的一个方法,他的异常值被定义为可能出现在上四分位数以上的部分与下四分位数以下的部分.当然,并不是说在这样的范围内的数都是异常值,但是可以肯定的是,异常值是一定在这里产生的。

  为了首先感知我们数据的基本情况,在Python的Pandas库中,只需要读入要处理的数据,然后使用describe()函数,就可以查看数据的基本情况.这里面涉及到数据的很多属性,比如说可以查看缺失值,最小值,最大值等.

为了更加直观我们的异常值分析,我们可以通过画箱型图的方式对其进行实现.

  

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 10 20:58:14 2018

@author: Administrator
"""
import pandas as pd
catering_sale='E:/catering_sale.xls'
data=pd.read_excel(catering_sale,index_col=u'日期') #读取数据,指定"日期"列为索引
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#建立图像
plt.figure()
#画箱线图
p=data.boxplot(return_type='dict')
x=p['fliers'][0].get_xdata()
y=p['fliers'][0].get_ydata()
y.sort()
for i in range(len(x)):
    if i>0:
        plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.05-0.8/(y[i]-y[i-1]),y[i]))
    else:
        plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.08,y[i]))
plt.show()

 上面就是画箱型图的代码,得到的结果为:


上面的箱型图可以这样理解:

处于下界与上界之间的数据,我们认为是正常值,这里在箱型图上对应的就是两个横线之间的部分,而在这两个横线之外的两个部分就认为是异常值的产生区域,这里的数据已经在箱型图上显示出来了,一共有八个数据,这时我们可以猜想,靠近上下界的数据,如4065.2与4060.3,这两个数据与上界相差不大,也可以认为是正常的数据,而距离上下界的较大的数据,如22.0等,就可以认为是异常数.

这就带来的问题就是,我们要确定一个异常值的标准,确定到底在哪个区间的数据是正常的数据,比如在400-5000这个区间的数据我们认为是正常的,那么其余的数据都可以认为是异常的数据。

 分析出异常数据,接下来就可以进行剔除了。


猜你喜欢

转载自blog.csdn.net/qq_20880939/article/details/79892083
今日推荐