1.引言:

数据预处理的方法主要包括去极值、标准化、中性化。那么这里介绍几个常用的去离群值的方法,所谓离群值就是异常值,这个和极值其实并不一样。常用的剔除离群值的方法有MAD、、百分位法。参考资料:数据预处理(上)之离群值处理、标准化、数据预处理(下)之中性化

2.MAD算法

MAD,即median absolute deviation,可译为绝对中位值偏差。其大致思想是通过判断每一个元素与中位值的偏差是否处于合理的范围内来判断该元素是否为离群值。具体方法如下:

(1)计算所有元素的中位值:

(2)计算所有元素与中位值的绝对偏差:

(3)取得绝对偏差的中位值:

(4)确定参数n,则可以对所有的数据作如下调整:

在这里我没有调整离群值,而是直接将其剔除了。

代码如下:

import numpy as np# MAD法: media absolute deviation
def MAD(dataset, n):median = np.median(dataset)  # 中位数deviations = abs(dataset - median)mad = np.median(deviations)remove_idx = np.where(abs(dataset - median) >  n * mad)new_data = np.delete(dataset, remove_idx)return new_data

2.

法又称为标准差法。标准差本身可以体现因子的离散程度,和MAD算法类似,只是法用到的不是中位值,而是均值,并且n的取值为3,代码如下:

# 3sigma法
def three_sigma(dataset, n= 3):mean = np.mean(dataset)sigma = np.std(dataset)remove_idx = np.where(abs(dataset - mean) > n * sigma)new_data = np.delete(dataset, remove_idx)return new_data

3.百分位法

百分位计算的逻辑是将因子值进行升序的排序,对排位百分位高于97.5%或排位百分位低于2.5%的因子值,类似于比赛中”去掉几个最高分,去掉几个最低分“的做法。代码如下:这里参数采用的是20%和80%,具体取值,还需具体情况具体分析。

# 百分位法:原始参数 min=0.025, max=0.975
def percent_range(dataset, min= 0.20, max= 0.80):range_max = np.percentile(dataset, max * 100)range_min = -np.percentile(-dataset, (1 - min) * 100)# 剔除前20%和后80%的数据new_data = []for value in dataset:if value < range_max and value > range_min:new_data.append(value)return new_data

这三个方法思路简单,易于实现,但是只能处理一维数据,接下来,再考虑更复杂但却更精准的可适用于多维数据的离群值处理方法!参考资料:离群点检测---基于kNN的离群点检测、LOF算法和CLOF算法

常用去除离群值的算法!相关推荐

  1. 亿级流量治理系列:常用的限流算法有哪些?

    前言 上篇文章<为什么大公司都要做流量治理?>跟大家聊了下做流量治理的真正目的是什么.如果你要开发一个流量治理的平台或者一个限流的框架,那么必不可少的就是要选择一种合适的限流算法.本篇文章 ...

  2. 常用的异常检测算法有哪些?

    常用的异常检测算法有哪些? 高斯混合模型(Gaussian Mixture Models): 在GMM的理念之中,任何位于低密度空间区域的实例都可以被视为异常,但我们必须定义我们想要使用的密度阈值(实 ...

  3. Atitit.跨语言 java c#.net php js常用的codec encode算法api 兼容性  应该内置到语言里面...

    Atitit.跨语言 java c#.net php js常用的codec encode算法api 兼容性  应该内置到语言里面 1. 常用算法1 1.1. 目录2 1.2. 定义和用法编辑2 1.3 ...

  4. 数据科学家最常用的10种算法

    最新的KDnuggets调查统计了数据科学家们实际工作中最常使用的算法,在大多数学术和产业界,都有惊人发现哦! 根据Gregory Piatetsky, KDnuggets,最新的调查问题是:在最近的 ...

  5. 【算法】常用的数据结构与算法

    学习了王争老师的数据结构与算法之美之后,比较有感触,他把我们常用的数据结构和算法都讲了一遍,而且讲的还不错.整理汇总一下作为笔记. 一.复杂度分析 非常重要.我们必须掌握,基本上要做到,简单代码能很快 ...

  6. 【算法基础】常用的数据结构与算法

    学习了王争老师的数据结构与算法之美之后,比较有感触,他把我们常用的数据结构和算法都讲了一遍,而且讲的还不错.整理汇总一下作为笔记. 一.复杂度分析 非常重要.我们必须掌握,基本上要做到,简单代码能很快 ...

  7. STL常用的算术和生成算法

    STL常用的算术和生成算法 accumulate() fill() accumulate() accumulate: 对指定范围内的元素求和,然后结果再加上一个由val指定的初始值. #include ...

  8. linux列表去重复数据,Linux常用去除重复数据口令

    一.uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个.使用uniq的时候要注意以下二点 1,对文本操 ...

  9. 游戏制作中的大宝剑---常用的数据结构与算法

    前言 时间流逝,物是人非,就好像涌动的河流,永无终焉,幼稚的心智将变得高尚,青年的爱慕将变得深刻,清澈之水折射着成长. ----------<塞尔塔传说> PS:为了方便大家阅读,个人认为 ...

最新文章

  1. 【python图像处理】直线和曲线的拟合与绘制(curve_fit()详解)
  2. 2、Power View—风骚的数据自动筛选
  3. 计算机硕士工资情况收集
  4. boost::core模块实现分配构造
  5. 极速收藏!巨详细的分布式架构知识体系
  6. 设计模式之单例模式8种实现方式,其三:懒汉式(线程不安全)
  7. 集体智慧编程chapter5:优化问题
  8. 2012 考研的心路历程
  9. 猿创征文|【FreeSwitch开发实践】使用sipp对FreeSwitch进行压力测试
  10. jmeter 变量的使用
  11. 三维激光雷达路沿检测
  12. html5毕业论文总结,毕业论文总结4
  13. NoSQLBooster操作Mongodb的基本使用。
  14. nodejs追加写入日志文件
  15. Dwz点击左侧菜单动态添加Tab标签图标
  16. 英语口语六级模拟测试软件,2016年11月英语六级考试口语试题模拟
  17. EMC 电磁兼容测试标准
  18. Ubuntu18.04 ifconfig命令找不到
  19. Java面试题日积月累(JavaSE40道)
  20. 汉堡王什么汉堡好吃_KFC、汉堡王、麦当劳:谁家汉堡最适合减肥时吃?

热门文章

  1. 如何配置apache虚拟主机
  2. 接口测试到底测试什么?
  3. ROS2 基础概念 话题
  4. JS获取网页大小和鼠标当前坐标
  5. 机器学习——线性模型学习
  6. win10的JDK安装环境变量配置
  7. 装机必备软件测试面试题,装机必备软件兼容性测试
  8. 建筑CAD基础设计【3】
  9. excel二进制移位运算_Excel揭秘13:在Excel中实现位运算
  10. 光电耦合器原理及应用介绍