zoukankan      html  css  js  c++  java
  • 异常值检验

    异常点检测的目的是找到数据集中和大多数数据不同的数据,常用的异常点检测算法一般分为三类。

      第一类是基于统计学的方法来处理异常数据,这种方法一般会构建一个概率分布模型,并计算对象符合该模型的概率,把具有低概率的对象视为异常点。比如特征工程中的RobustScaler方法,在做数据特征值缩放的时候,它会利用数据特征的分位数分布,将数据根据分位数划分为多段,只取中间段来做缩放,比如只取25%分位数到75%分位数的数据做缩放,这样减少了异常数据的影响。

      第二类是基于聚类的方法来做异常点检测。这个很好理解,由于大部分聚类算法是基于数据特征的分布来做的,通常我们聚类后发现某些聚类簇的数据样本量比其他簇少很多,而且这个簇里的数据特征均值分布之类的值和其他簇也差异很大,这些簇里的样本点大部分时候都是异常点。比如BIRCH聚类算法原理和DBSCAN密度聚类算法都可以在聚类的同时做异常点的检测。

      第三类是基于专门的异常点检测算法来做。这些算法不像聚类算法,检测异常点只是一个赠品,他们的目的就是专门检测异常点的,这类算法的代表是One Class SVM 和Isolation Forest。

      第一类代表方法有箱形图与3sigma原则,倾向于一维数据。运用3sigma原则时,需要保证数据符合正态分布或近似正态分布。在这个过程中运用的方法大致可分为两类,检验正态性与数据转化。正态性检验包括频率或频数直方图、QQ图、t检验等,kaggle等比赛中常用的数据转化有box_cox。

      Box-Cox变换是统计建模中常用的一种数据变换,用于连续的响应变量不满足正态分布的情况。在做线性回归的过程中,不可观测的误差可能是和预测变量相关,于是给线性回归的最小二乘法估计系数的结果带来误差,为了解决这样的方差齐性问题,所以考虑对相应因变量做Box-Cox变换,变换之后,可以一定程度上减小不可观测的误差和预测变量的相关性。

    正态性检验

        def draw_distribute1(self,data):
            fig = plt.figure(figsize = (10,6))
            ax2 = fig.add_subplot(2,1,2)  # 创建子图2
            data.hist(bins=30,alpha = 0.5,ax = ax2)
            data.plot(kind = 'kde', secondary_y=True,ax = ax2)
            plt.title("%s库存比频数直方图"%(self.comp[0]))
            plt.savefig(r'%s\%s2.png'%(root,self.comp[0]), bbox_inches='tight')
            plt.grid()
            plt.show()
            # 绘制直方图
            # 呈现较明显的正太性
        def draw_distribute3(self,data):
            sm.qqplot(data.values,line='s')
            plt.title("%s库存比转化QQ图"%(self.comp[0]))
            #stats.probplot(data.values, dist="norm", plot=plt)
            plt.savefig(r'%s\%s1.png'%(root,self.comp[0]), bbox_inches='tight')
            plt.show()
    ##BOX_COX转化       
    x = stats.boxcox(new_data['RATIO'].values,stats.boxcox_normmax(new_data['RATIO'].values))
    df = pd.DataFrame(data)
    df.plot.box(title="hua tu")
    plt.grid(linestyle="--", alpha=0.3)
    plt.show()

      

  • 相关阅读:
    day02操作系统/编程语言分类/python解释器介绍/python解释器多版本共存
    网络编程-互联网协议(网络编程)/基于TCP协议的套接字通信/加上通信循环/加上连接循环
    每天新的英语单词
    re模块(正则表达式)
    包的使用/time与datetime模块/random模块/打印进度条/shutil模块
    模块的使用之import/模块的使用之 from import/区分python文件的两种用途
    列表生成式与生成器表达式模块的使用模块的使用之from.......import区分python文件的两种用途文件的搜索路径
    三元表达式/函数的递归/匿名函数及其应用/map函数/reduce函数/ filter函数
    函数的嵌套/名称空间/作用域/函数对象/闭包函数
    跟未名学Office
  • 原文地址:https://www.cnblogs.com/xxupup/p/13274129.html
Copyright © 2011-2022 走看看