• 异常值检验


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

      第一类是基于统计学的方法来处理异常数据,这种方法一般会构建一个概率分布模型,并计算对象符合该模型的概率,把具有低概率的对象视为异常点。比如特征工程中的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()

      

  • 相关阅读:
    Babel:JavaScript编译器
    Webpack:前端资源模块化管理和打包工具
    springboot之RocketMq实现
    spingboot之Java邮件发送
    第一模块总结
    嵌入式面试题(一)
    C/C++练习题(三)
    ToolTip特效 JavaScript 盗取厦门人才网的特效
    C#后台无刷新页面弹出alert方法
    复制表及其只复制表数据的区别
  • 原文地址:https://www.cnblogs.com/xxupup/p/13274129.html
Copyright © 2020-2023  润新知