离群值

离群值是指与集合中其他观测值差异较大的任何数据点。

例如:

当一个学生的平均成绩在90%以上,而其他小组的成绩在70%,就会出现明显的离群现象。
通过分析某个客户的购买模式,突然出现了一个非常高价值的购买(如10万)。虽然某客户的交易额大多在1万左右波动。不管是什么原因,10万的购买量在整体数据中都是一个异数。
乌塞恩-博尔特--记录短跑绝对是排放当大多数运动员被考虑。
异常值存在的原因有很多。有可能是分析人员在输入数据时出错,也有可能是设备产生了测量误差,甚至有可能是故意离群。

如果有离群值/异常值,数据分布会有重尾。

离群有两种类型:一维和多维。

一维离群是指仅由一个变量的极端值组成的数据点,而多维离群/异常是指至少两个变量的综合异常值。假设我们有三个不同的变量--X,Y,Z。如果我们将这些变量绘制在三维空间中,就会形成一种云。所有位于在这之外的数据点都将是多维度的排放。

异常/离群值会严重影响分析和统计建模的结果。

大多数参数统计,如平均数、标准差和相关性,以及基于这些参数的任何统计,对离群值都非常敏感。

单纯地消除离群并不总是一个好主意。离群/异常值可以是相当合理的观察,有时也是最有趣的观察。在作出决定之前,必须研究离群值的性质。

如果某项异常值显然是由于输入或测量的数据不正确造成的,则应将其删除。
如果离群/异常值不改变结果,但影响假设,则可删除离群/异常值。不过,报告中值得注意的是这一点。你也可以建立一个有这个版本和没有这个版本的模型,看看结果。

如何查找离群/异常值情况?
1.通过可视化

2.通过数学计算

import pandas as pdimport matplotlib.pyplot as plt
%matplotlib inlinefrom sklearn.datasets import load_boston
boston = load_boston()
x = boston.data
y = boston.target
columns = boston.feature_names#create the dataframe
boston_df = pd.DataFrame(x)
boston_df.columns = columns
boston_df.head()

Box-plot

import seaborn as sns
sns.boxplot(x=boston_df['INDUS']);

剖析框图

sns.boxplot(x=boston_df['PTRATIO']);

sns.boxplot(x=boston_df['DIS']);

最后一张图显示的是10和12之间的三个辍学点,不包括在方框内的其他观察点,即公寓之间。

Scatter-plot

fig, ax = plt.subplots(figsize=(16,8))
ax.scatter(boston_df['INDUS'], boston_df['TAX'])
ax.set_xlabel('Proportion of non-retail business acres per town')
ax.set_ylabel('Full-value property-tax rate per $10,000')
plt.show();

你可以清晰地看到云外的点。

Z-Score

Z-Score是指观测点或数据的值超过观测值或测量值平均值的标准差的符号数。

from scipy import stats
import numpy as np
z = np.abs(stats.zscore(boston_df))
print(z)

threshold = 3
print(np.where(z > 3))

print(z[55][1])
3.375038763517309

例如,ZN中的第55个观测值(划为25,000平方英尺以上地段的住宅用地比例)就是一种离群。

IQR score

四分位数范围(IQR),又称平均数或50%平均数,或技术上称为H-spread,是衡量统计学分散度的指标,等于75%和25%之间的差值,或上四分位数和下四分位数之间的差值,IQR=Q3 - Q1。百度百科解释

Q1 = boston_df.quantile(0.25)
Q3 = boston_df.quantile(0.75)
IQR = Q3 - Q1
print(IQR)
CRIM         3.565378
ZN          12.500000
INDUS       12.910000
CHAS         0.000000
NOX          0.175000
RM           0.738000
AGE         49.050000
DIS          3.088250
RAD         20.000000
TAX        387.000000
PTRATIO      2.800000
B           20.847500
LSTAT       10.005000
dtype: float64

既然我们现在有了IQR估计,那么我们就选择离群值。下面的代码将产生带有真值和假值的结果。带有False的数据点表示这些值是有效的,而True则表示有释放。

print((boston_df < (Q1 - 1.5 * IQR)) | (boston_df > (Q3 + 1.5 * IQR)))
      CRIM     ZN  INDUS   CHAS    NOX     RM    AGE    DIS    RAD    TAX  \
0    False  False  False  False  False  False  False  False  False  False
1    False  False  False  False  False  False  False  False  False  False
2    False  False  False  False  False  False  False  False  False  False
3    False  False  False  False  False  False  False  False  False  False
4    False  False  False  False  False  False  False  False  False  False
5    False  False  False  False  False  False  False  False  False  False
6    False  False  False  False  False  False  False  False  False  False
7    False  False  False  False  False  False  False  False  False  False
8    False  False  False  False  False  False  False  False  False  False
9    False  False  False  False  False  False  False  False  False  False
10   False  False  False  False  False  False  False  False  False  False
11   False  False  False  False  False  False  False  False  False  False
12   False  False  False  False  False  False  False  False  False  False
13   False  False  False  False  False  False  False  False  False  False
14   False  False  False  False  False  False  False  False  False  False
15   False  False  False  False  False  False  False  False  False  False
16   False  False  False  False  False  False  False  False  False  False
17   False  False  False  False  False  False  False  False  False  False
18   False  False  False  False  False  False  False  False  False  False
19   False  False  False  False  False  False  False  False  False  False
20   False  False  False  False  False  False  False  False  False  False
21   False  False  False  False  False  False  False  False  False  False
22   False  False  False  False  False  False  False  False  False  False
23   False  False  False  False  False  False  False  False  False  False
24   False  False  False  False  False  False  False  False  False  False
25   False  False  False  False  False  False  False  False  False  False
26   False  False  False  False  False  False  False  False  False  False
27   False  False  False  False  False  False  False  False  False  False
28   False  False  False  False  False  False  False  False  False  False
29   False  False  False  False  False  False  False  False  False  False
..     ...    ...    ...    ...    ...    ...    ...    ...    ...    ...
476  False  False  False  False  False  False  False  False  False  False
477   True  False  False  False  False  False  False  False  False  False
478   True  False  False  False  False  False  False  False  False  False
479   True  False  False  False  False  False  False  False  False  False
480  False  False  False  False  False  False  False  False  False  False
481  False  False  False  False  False  False  False  False  False  False
482  False  False  False  False  False  False  False  False  False  False
483  False  False  False  False  False  False  False  False  False  False
484  False  False  False  False  False  False  False  False  False  False
485  False  False  False  False  False  False  False  False  False  False
486  False  False  False  False  False  False  False  False  False  False
487  False  False  False  False  False  False  False  False  False  False
488  False  False  False  False  False  False  False  False  False  False
489  False  False  False  False  False  False  False  False  False  False
490  False  False  False  False  False  False  False  False  False  False
491  False  False  False  False  False  False  False  False  False  False
492  False  False  False  False  False  False  False  False  False  False
493  False  False  False  False  False  False  False  False  False  False
494  False  False  False  False  False  False  False  False  False  False
495  False  False  False  False  False  False  False  False  False  False
496  False  False  False  False  False  False  False  False  False  False
497  False  False  False  False  False  False  False  False  False  False
498  False  False  False  False  False  False  False  False  False  False
499  False  False  False  False  False  False  False  False  False  False
500  False  False  False  False  False  False  False  False  False  False
501  False  False  False  False  False  False  False  False  False  False
502  False  False  False  False  False  False  False  False  False  False
503  False  False  False  False  False  False  False  False  False  False
504  False  False  False  False  False  False  False  False  False  False
505  False  False  False  False  False  False  False  False  False  False   PTRATIO      B  LSTAT
0      False  False  False
1      False  False  False
2      False  False  False
3      False  False  False
4      False  False  False
5      False  False  False
6      False  False  False
7      False  False  False
8      False  False  False
9      False  False  False
10     False  False  False
11     False  False  False
12     False  False  False
13     False  False  False
14     False  False  False
15     False  False  False
16     False  False  False
17     False  False  False
18     False   True  False
19     False  False  False
20     False  False  False
21     False  False  False
22     False  False  False
23     False  False  False
24     False  False  False
25     False   True  False
26     False  False  False
27     False   True  False
28     False  False  False
29     False  False  False
..       ...    ...    ...
476    False  False  False
477    False  False  False
478    False  False  False
479    False  False  False
480    False  False  False
481    False  False  False
482    False  False  False
483    False  False  False
484    False  False  False
485    False  False  False
486    False  False  False
487    False  False  False
488    False  False  False
489    False   True  False
490    False   True  False
491    False  False  False
492    False  False  False
493    False  False  False
494    False  False  False
495    False  False  False
496    False  False  False
497    False  False  False
498    False  False  False
499    False  False  False
500    False  False  False
501    False  False  False
502    False  False  False
503    False  False  False
504    False  False  False
505    False  False  False  [506 rows x 13 columns]

在ModelTestingTemplate中的影响措施。

聚类/分类。
1.K-means
2.隔离林

离群值/异常值怎么办?
识别异常值--分析有无异常值的结果模型--做出结论。
如果你确定数值是错误的,就修正它。
如果离群值不在利益分配范围内,则删除。
考虑到数据的差距。
使用抗离群值的统计工具,例如,稳健回归(用另一种参数估计方法)Robust_regression。
离群值的常见原因是两种分布的混合,可能是两个不同的子人群,也可能表明 "测量正确 "和 "测量误差";这通常是由混合模型来建模。 (Mixture model).

Python 之 异常值/离群值的处理相关推荐

  1. MATLAB箱型图异常值/离群值处理(箱型图红色加号)

    MATLAB箱型图异常值/离群值处理(箱型图红色加号) 博主针对污染物小时浓度值绘制了年变化的箱型图,出现了大片的较高"异常值",其实是一些高污染事件,并不属于"异常值& ...

  2. python异常值处理箱型图_如何利用python处理异常值?

    在数据清洗阶段,我们需要找到异常值,并对其进行相应的一些处理.在python中,异常值的处理常常需要结合一些数据模型或概率分布来解决.下面做一个简单的介绍. 1.打开pycharm开发工具,在运行窗口 ...

  3. 使用python进行异常值(outlier)检测实战:KMeans + PCA + IsolationForest + SVM + EllipticEnvelope

    作者:Susan Li ,原文:https://towardsdatascience.com/time-series-of-price-anomaly-detection-13586cd5ff46 略 ...

  4. Python:异常值检测箱型图(附:正态分布3σ)

    异常值检测的方法有很多,通过数据分布图型寻找异常值.算法模型(聚类.随机森林等),我这里就是记录一下工作中做初步的数据探查时用到的箱型图检测和正态分布检测,这两种都是根据数据分布情况来识别异常值的,没 ...

  5. python处理异常值循环_Python数据处理:异常值处理方法之3σ原则

    原标题:Python数据处理:异常值处理方法之3σ原则 一.3σ原则定义 异常值是指样本中的个别值,其数值明显偏离其余的观测值.异常值也称离群点,异常值的分析也称为离群点的分析. 在进行机器学习过程中 ...

  6. python数据异常值处理_Python数据清洗(三):异常值识别与处理

    作者 | 刘顺祥 来源 | 数据分析1480 原文 |Python数据清洗--缺失值识别与处理 在<Python数据清洗(一):类型转换和冗余数据删除>和<Python数据清洗(二) ...

  7. python处理异常值--箱型图查找异常值并替换

    箱型图查找异常值并替换 定义为值大于上四分位或者小于下四分位的值位异常值,若是异常值,则用mean替换,项目中遇到的,但是这个可能或将0值也替换了,但是0值不是异常值,故而舍弃这种方法. import ...

  8. python异常值处理实例_利用Python进行异常值分析实例代码

    前言 异常值是指样本中的个别值,也称为离群点,其数值明显偏离其余的观测值.常用检测方法3σ原则和箱型图.其中,3σ原则只适用服从正态分布的数据.在3σ原则下,异常值被定义为观察值和平均值的偏差超过3倍 ...

  9. python时间序列异常值查找_(No.38)时间序列异常点检测算法

    写在前面: 针对一个数值序列,识别出其中的异常波动点.例如: p = [1 1 1.1 1 0.9 1 1 1.1 1 0.9 1 1.1 1 1 0.9 1 1 1.1 1 1 1 1 1.1 0. ...

最新文章

  1. CSS 小结笔记之滑动门技术
  2. 二叉树前序、中序、后序遍历非递归写法的透彻解析
  3. 3D溜溜网站用的是php吗_三大免费开源的php语言cms系统 用好它们让你一天建好一个网站...
  4. 从wordpress到octopress
  5. 时序分析基本概念介绍<input/output delay>
  6. 佛祖保佑,永无BUG
  7. XILINX-DDR3IP核的使用
  8. 高等数学辅导讲义_历年真题,复习讲义的经验分享(数二127分)
  9. Autojs4脚本大合集(薅羊毛专业版的脚本)
  10. 几种统计图表的作用和区别
  11. win7设置视力保护色
  12. JAVA将多个PDF文件合并成一个PDF
  13. 为什么许多器件的片选信号低电平有效,而不是高电平有效?
  14. 人工智能轨道交通行业周刊-第14期(2022.9.12-9.18)
  15. 花之语第十四期:萱草花
  16. Android系统篇之—-Android中的run-as命令引出升降权限的安全问题(Linux中的setuid和setgid)
  17. SpringBoot 接口数据加解密实战
  18. 基于Python监测键盘输入并发出声音的坤音键盘
  19. 技术管理者对知识组织的认识
  20. java生成二值图,如何创建java poi条形图,结合两个条形值,如给定的图像?

热门文章

  1. mysql数据库全部大写吗_mysql中数据库名字分大小写吗
  2. Android格子视图的另外一种实现方式之Images3LinearLayout(9宫格/九宫格)
  3. iPhone中通过ics来添加农历与天气预报
  4. android蓝牙开启后会尝试自动连接,Android 自动连接蓝牙
  5. Dialog 宽度占满全屏
  6. win11 超神软件
  7. LARS算法探究LOL比赛各数据对胜负的影响
  8. Qt5 实现文件复制并在指定路径下创建文件夹
  9. 雨听 | 英语学习笔记(十七)~作文范文:大学生的书单
  10. 【学堂上新】Addressable系统解析及实践经验