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
参考文档:
python离群点检测方法分几类_数据分析 第五篇:离群点检测相关推荐
- 溢出检测单符号位法_电工知识:继电器的识别与检测方法图解
继电器的识别与检测方法图解 [1] 继电器是一种常用的控制器件,它可以用较小的电流来控制较大的电流,用低电压来控制高电压,用直流电来控制交流电等,并且可实现控制电路与被控电路之间的隔离,在自动控制.遥 ...
- 【研究型论文】结合多特征识别的恶意加密流量检测方法(中文论文_信息安全学报)
文章目录 结合多特征识别的恶意加密流量检测方法 摘要 论文解决的问题与贡献 1. 正常流量与恶意流量特征比较 (1)会话的统计特征分析 (2)TLS协议特征分析 (3)服务器证书特征 (4)服务器域名 ...
- 学会python可以做自己想做的事----用Python给你喜欢的音乐分个类吧
你喜欢什么样的音乐?目前,很多公司实现了对音乐的分类,要么是为了向客户提供推荐(如Spotify.SoundCloud),要么只是作为一种产品(如Shazam).对音乐进行分类,首先要确定音乐类型.事 ...
- 代码详解:用Python给你喜欢的音乐分个类吧
点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Everyone to hello, not an obligation. ...
- python迭代器两个基本方法可供参考_浅析python迭代器和生成器
可迭代对象 概念 一个对象(在Python里面一切都是对象)只要实现了只要实现了__iter__()方法,那么这个对象就是可迭代对象 常见的可迭代对象 集合或序列类型(如list.tuple.set. ...
- Python 69个内置函数分8类总结,这样记更方便!
0 内置函数 Python3解释器中内置了69个常用函数,属于底层的函数,它们到处可用.有些对大家来说比较熟悉,比如abs(), max(), sum()... 也有一些比较陌生,比如locals() ...
- python有两个运行程序分别是什么_运行python程序的两种方式
[单选题]I wonder why ________ are so interested in action movies. [单选题]项目经理的职责不包括以下哪项内容 ? [简答题]结合项目的特点和 ...
- python的面向对象编程学生成绩_python的类_面向对象编程
摘自谬雪峰https://www.liaoxuefeng.com/wiki/1016959663602400/1017496031185408 面向对象编程(定义对象)和面向过程(定义函数)的区别,各 ...
- python分类汇总_数据分析番外篇13_利用Python实现分类汇总
自己建立了一个数据分析兴趣小组群,在分享了一篇有关Python的介绍后,这两天大家的学习热情高涨,于是纷纷将自己的问题扔到群里诱使大家来解决,比如:如何代码实现去除文本里面的多余空格,如何将一个27万 ...
最新文章
- 未来网络发展的趋势——IPv6详细讲解与基本配置
- 开源的那些事儿之如何看待开源
- C++ 通讯录学习总结
- 漫画谈-微积分(一)
- VTK:等参细胞演示用法实战
- 助力小白常见JS逆向乱杀喂饭教程——Url加密
- 时隔两年 重新当码农
- 04-Flutter移动电商实战-打通底部导航栏
- 多中心临床大数据平台建设及深度应用
- phpcmsV9 用户vip过期后,自动降级的办法 - 代码篇
- 2d绘制 c# dx_C# 从零开始写 SharpDx 应用 绘制基础图形
- python整数类型进制表示_Python数据类型--整型
- Java学习笔记-1.简介
- 万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。 - 今日头条(www.toutiao.com)...
- python自动华 (十二)
- 快速构建express后端模版从qiya-cli开始
- 在CentOS6.5上安装/启动PostgreSQL
- 软考—程序设计语言—有限自动机、正规式、编译程序基础、语法树、解释程序基础
- 金蝶KIS保存记账凭证的时候提示“在清除未下设辅助账的科目所在的会计分录中的核算项目代码时出现冲突或错误,凭证还没有被保存,请您稍后重试。”错误
- zabbix_agentd_window端运行报错cannot connect to Service Manager: [0x00000005]