python离群点检测方法分几类_数据分析 第五篇:离群点检测

离群点(outlier)是指和其他观测点偏离非常大的数据点,离群点是异常的数据点,但是不一定是错误的数据点。确定离群点对于数据分析会带来不利的影响,比如,增大错误方差、影响预测和影响正态性。

从散点图上可以直观地看到离群点,离群点是孤立的一个数据点;从分布上来看,离群点远离数据集中其他数据点。

在数据处理过程中,检测离断点的方法,通常有Z-score 和 IQR。

一,Z-score方法

在介绍Z-score方法之前,先了解一下3∂原则,这个原则有个前提条件:数据需要服从正态分布。

在3∂原则下,如果观测值与平均值的差值超过3倍标准差,那么可以将其视为异常值。正负3∂的概率是99.7%,那么距离平均值3∂之外的值出现的概率为P(|x-u| > 3∂) <= 0.003,属于极个别的小概率事件。

如果数据不服从正态分布,那么可以用远离平均值的多少倍标准差来描述,倍数就是Z-score。Z-score以标准差为单位去度量某一原始分数偏离平均数的距离,它回答了一个问题:"一个给定分数距离平均数多少个标准差?",Z-score的公式是:

Z-score = (Observation — Mean)/Standard Deviation

z = (X — μ) / σ

Z-score需要根据经验和实际情况来决定,通常把远离标准差3倍距离以上的数据点视为离群点,也就是说,把Z-score大于3的数据点视作离群点,Python代码的实现如下:

importnumpy as npimportpandas as pd

defdetect_outliers(data,threshold=3):

mean_d=np.mean(data)

std_d=np.std(data)

outliers=[]for y indata_d:

z_score= (y - mean_d)/std_dif np.abs(z_score) >threshold:

outliers.append(y)return outliers

二,IQR方法

四分位点内距(Inter-Quartile Range,IQR),是指在第75个百分点与第25个百分点的差值,或者说,上、下四分位数之间的差,计算IQR的公式是:

IQR = Q3 − Q1

IQR是统计分散程度的一个度量,分散程度通过需要借助箱线图来观察,通常把小于 Q1 - 1.5 * IQR 或者大于 Q3 + 1.5 * IQR的数据点视作离群点,探测离群点的公式是:

outliers =  value < ( Q1 - 1.5 * IQR )  or value > ( Q3 + 1.5 * IQR )

这种探测离群点的方法,是箱线图默认的方法,箱线图提供了识别异常值/离群点的一个标准:

异常值通常被定义为小于 QL- l.5 IQR 或者 大于 Qu+ 1.5 IQR的值,QL称为下四分位数, Qu称为上四分位数,IQR称为四分位数间距,是Qu上四分位数和QL下四分位数之差,其间包括了全部观察值的一半。

箱线图的各个组成部分的名称及其位置如下图所示:

箱线图可以直观地看出数据集的以下重要特性:

中心位置:中位数所在的位置就是数据集的中心,从中心位置向上或向下看,可以看出数据的倾斜程度。

散布程度:箱线图分为多个区间,区间较短时,表示落在该区间的点较集中;

对称性:如果中位数位于箱子的中间位置,那么数据分布较为对称;如果极值离中位数的距离较大,那么表示数据分布倾斜。

离群点:离群点分布在箱线图的上下边缘之外。

使用Python实现,参数sr是Series类型的变量:

defdetect_outliers(sr):

q1= sr.quantile(0.25)

q3= sr.quantile(0.75)

iqr= q3-q1 #Interquartile range

fence_low = q1-1.5*iqr

fence_high= q3+1.5*iqr

outliers= sr.loc[(sr < fence_low) | (sr >fence_high)]return outliers

参考文档:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络TCP/IP

TCP/IP原理 看《图解TCP/IP》时做的笔记&#xff0c;记录一些感觉重要的东西…还没完&#xff0c;正在学&#xff0c;慢慢写 1.计算机网络的发展 2.OSI参考模型 3.传输方式分类 4.地址及网络的构成 5.TCP/IP协议的出现 6.TCP/IP分层模型及通信示例 7.数据链路层1 8.数…

hive求差集和交集

2019独角兽企业重金招聘Python工程师标准>>> 用的要求总数和统计数&#xff1a; 总数的概念是利用安卓ID&#xff0c;就以为这把两个月前的安卓ID统统的统计一遍&#xff0c;如果没有出现&#xff0c;恰好在今天出现了&#xff0c;那么当前的这个用户就是新增的…

python静态方法可以被继承吗_python 类的继承 实例方法.静态方法.类方法的代码解析...

这篇文章主要介绍了python 类的继承 实例方法.静态方法.类方法的代码解析,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下dt{}class Denglu:def register(self,name,psd):if name.isalnum() and psd.isalnum():i…

渐变色--浏览器兼容性

说明&#xff1a; 1.360兼容模式效果不好 2.可以直接用不同浏览器打开这个页面查看效果 <!DOCTYPE html><html><head lang"en"> <meta charset"UTF-8"> <title></title> <style> body{ …

如何学习前端 转载

作者&#xff1a;小不了链接&#xff1a;https://zhuanlan.zhihu.com/p/23265155来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 鉴于时不时&#xff0c;有同学私信问我&#xff08;老姚&#xff0c;下同&#xff09;怎…

tcp前4字节消息长度_网络基础篇之TCP

​网络分层什么是 TCP TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。- 面向连接&#xff1a;通过三次握手建立一对一的连接&#xff08; UDP 协议 可以一个主机同时向多个主机发送消息&#xff0c;即一对多&#xff09;&#xff1b;- 可靠的&#xff1a;通过序号、校…

使用Servlet实现用户注册

1、用户注册页面代码 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&q…

年轻人的第一篇V语言笔记

V语言极限学习 我听说V语言看文档半小时就能完全掌握&#xff1f;&#xff1f;&#xff1f;&#xff1f;以我的智商一小时掌握不了我就给各位科普一下广告法&#xff1f;&#xff1f;&#xff1f; 宇宙惯例hello world // first v code fn main(){printIn("hello world…

android studio运行手机时出错怎么解决_小程序 android ios h5解决方案

你现在开发android,ios,小程序用什么工具&#xff0c;怎么开发的&#xff1f;还在单个端的开发吗&#xff1f;今天我们主要讨论的是一次开发多端使用的技术&#xff0c;也是这两年比较流行的开发方向。现在的终端太多了&#xff0c;app两个端android和ios,小程序有微信&#xf…

Android SDK上手指南:应用程序数据

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/52996965 在本系列教程当中&#xff0c;我们将学习如何从零开始进行Android SDK开发。我们已经熟悉了Android应用程序的结构与基本组成元素&#xff0c;…

设计微服务架构需要解决的问题

问题&#xff1a; 划分服务的原则是什么服务之间选择何种轻量级的通信协议如何做到服务的独立部署如何确定使用何种编程语言?控制多语言带来的复杂度如何做到服务的去中心化如何解决大量微服务引入的运维成本转载于:https://www.cnblogs.com/fight-tao/p/5641286.html

Django Model设计详解

Django Model 设计 Django Model设计是Django五项基础核心设计之一&#xff08;Model设计&#xff0c;URL配置&#xff0c;View编写&#xff0c;Template设计&#xff0c;From使用&#xff09;&#xff0c;也是MVC模式中重要的环节。 如果图片无法访问&#xff0c;大家可以移…

python设置全局变量失败_Python全局变量与global关键字常见错误解决方案

在Python的变量使用中&#xff0c;经常会遇到这样的错误:local variable a referenced before assignment它的意思是&#xff1a;局部变量“a”在赋值前就被引用了。比如运行下面的代码就会出现这样的问题&#xff1a;a 3def Fuc():print (a)a a 1Fuc()​ 但是如果把 a a …

Atititi tesseract使用总结

Atititi tesseract使用总结 消除bug&#xff0c;优化&#xff0c;重新发布。当前版本为3.02 项目下载地址为&#xff1a;http://code.google.com/p/tesseract-ocr。 Windows cmd命令行使用Tesseract-OCR引擎识别验证码: 1、下载安装Tesseract-OCR引擎(3.0版本才支持中文识别) t…

Javascipt数组去重的几种方式

方法一 function unique(arr) {var retArr [];for (var i 0; i < arr.length; i) {(retArr.indexOf(arr[i]) -1) && retArr.push(arr[i]);}return retArr; } 方法二 function unique(arr) {return arr.filter(function(item, index, array) {return array.indexO…

01_JS语法

JS语法 严格区分大小写以;结尾&#xff0c;不写浏览器会自动加&#xff0c;但不准确&#xff0c;且会占用浏览器资源自动忽略多个空格和换行 写在哪 所有JS代码都必须依托网页运行 内嵌 写在html的script标签中 <script>// JS代码 </script>事件 写在某个ht…

pythonwhile循环love_python基础之while循环及编码

while 条件&#xff1a;循环体死循环&#xff1a;没有终止条件(修改方法&#xff1a;1.改变条件2.使用break)break 终止当前循环contiune&#xff1a;跳出本次循环&#xff0c;继续下次循环break和contione必须在循环体里while 条件&#xff1a;循环体else&#xff1a;结果当wh…

css页面布局

居中布局 水平居中 父元素和子元素的宽度都未知 inline-block text-ailgn .child{display:inline-block;} .parent{text-align:center;} 优点&#xff1a;兼容性好 缺点&#xff1a;子元素文本继承了text-align属性&#xff0c;子元素要额外加text-align:left; table ma…

02_JS变量

JS变量 字面量 常量&#xff0c;不可变量 变量 变量用 var 变量名声明 命名 变量命名以数字字母下划线和$组成&#xff0c;不能以数字开头&#xff0c;还可以是utf-8的任意字符&#xff0c;包括中文&#xff0c;一般采用驼峰命名法 常用的几个函数 alert():浏览器弹窗d…

Rotate String

Given a string and an offset, rotate string by offset. (rotate from left to right) Example Given "abcdefg". offset0 > "abcdefg" offset1 > "gabcdef" offset2 > "fgabcde" offset3 > "efgabcd"分析&am…