# 在Python中寻找数据异常值的三种方法

## 1. 引言

[En]

In the fields of data processing and machine learning, we often need to deal with all kinds of data. This paper focuses on three very simple methods to detect outliers in the data set. Cut the gossip and let’s get started.

## 2. 举个栗子

[En]

To facilitate the introduction, our test data set is given here, as follows:

data = pd.DataFrame([    [87, 82, 85],    [81, 89, 75],    [86, 87, 69],    [91, 79, 86],    [88, 89, 82],    [0, 0, 0],  # this guy missed the exam    [100, 100, 100],], columns=["math", "science", "english"])


[En]

Suppose we have a bunch of students’ test scores in three subjects-English, math and science. These students usually do well, but one of them missed all the exams and got 0 in all three subjects. It is included in our analysis that this guy may screw things up, so we need to treat him as an anomaly.

## 3. 孤立森林

[En]

Using the isolated forest algorithm to solve the above outlier analysis is very simple, the code is as follows:

from sklearn.ensemble import IsolationForestpredictions = IsolationForest().fit(data).predict(data)# predictions = array([ 1,  1,  1,  1,  1, -1, -1])


[En]

Here, the predicted value is predicted for each row, and the predicted result is 1 or-1; where 1 indicates that the row is not an outlier, and-1 indicates that the row is an outlier. In the above example, our isolated forest algorithm predicts the last two rows of data as outliers.

## 4. 椭圆模型拟合

[En]

It is also very convenient to use the solitary ellipse model fitting algorithm to solve the above abnormal values, the code is as follows:

from sklearn.covariance import EllipticEnvelopepredictions = EllipticEnvelope().fit(data).predict(data)# predictions = array([ 1,  1,  1,  1,  1, -1, 1])


[En]

In the above code, we use another outlier detection algorithm to replace the isolated forest algorithm, but the code remains the same. Similarly, in the predicted value, 1 represents a non-outlier and-1 represents an outlier. In the above cases, our ellipse model fitting algorithm only takes the penultimate student as the outlier, that is, all candidates whose scores are zero.

## 5. 局部异常因子算法

[En]

Similarly, we can easily use the local exception factor algorithm to analyze the above data. The sample code is as follows:

from sklearn.neighbors import LocalOutlierFactorpredictions = LocalOutlierFactor(n_neighbors=5, novelty=True).fit(data).predict(data)# array([ 1,  1,  1,  1,  1, -1,  1])


## 6. 挑选异常值检测方法

[En]

So how do we decide which anomaly detection algorithm is better? In short, there are no “best” outlier detection algorithms-we can think of them as different ways to do the same thing (and get slightly different results)

## 7. 异常值消除

[En]

After we have obtained the anomaly prediction from any of the above three anomaly detection algorithms, we can now perform the deletion of outliers. Here, we only need to keep all the data rows whose exception prediction is 1, as follows:

predictions = array([ 1,  1,  1,  1,  1, -1,  1])data2 = data[predictions==1]


## 8. 总结

Original: https://blog.51cto.com/u_15506603/5512727
Author: sgzqc
Title: 在Python中寻找数据异常值的三种方法

(0)

### 大家都在看

• #### 从零开始学Django –03 实现登录注册

实现登录注册 以登录为例，要想实现登录： 让用户访问到登录界面、连接到数据库上 访问登录界面 登录界面通常会包含： html文件、css文件、js文件、image文件，这些东西通常…

Python 2023年8月4日
073
• #### Python—pandas之reshape(1,-1)

在创建DataFrame的时候我们常常会用reshape函数来更改数据的列数和行数。reshape可以用于 numpy库里的ndarray和array结构以及 pandas库里面的…

Python 2023年8月29日
0177
• #### 学习笔记——Django项目的删除数据、查询数据（filter、get、exclude）

2022-09-30 删除数据： 方式一： 打开pycharm，进入虚拟环境，进入shell环境（python manage.py shell）。 删除数据，接上面的笔记——&#8…

Python 2023年6月9日
0127

Python 2023年8月13日
065
• #### CMU 15-445 Project 0 实现字典树

原文链接：https://juejin.cn/post/7139572163371073543 项目准备 代码、手册 本文对应 2022 年的课程，Project 0 已经更新为实…

Python 2023年10月22日
090
• #### Python Pandas常用的描述性统计信息的函数

1.count() # 非空观测数量 2.sum() # 所有值之和 3.mean() # 所有值的平均值 4.median() # 所有值的中位数 5.mode() # 值的模值…

Python 2023年8月8日
0109
• #### 667真题 | 基于ChatGpt提供2021-2023年川大667分析题答题思路

抵扣说明： 1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载，可以购买VIP、付费专栏及课程。 Original: https://blo…

Python 2023年11月4日
065
• #### Pytorch中的 torch.as_tensor() 和 torch.from_numpy() 的区别

之前我写过一篇文章，比较了 torch.Tensor() 和 torch.tensor() 的区别，而这两者都是 深拷贝的方法，返回张量的同时，会在内存中创建一个额外的数据副本，与…

Python 2023年8月23日
084
• #### Pandas统计计数value_counts()的使用

value_counts()方法返回一个序列Series，该序列包含每个值的数量(对于数据框中的任何列，value_counts()方法会返回该列每个项的计数) value_cou…

Python 2023年8月16日
0111
• #### 分布式存储系统之Ceph集群CephX认证和授权

前文我们了解了Ceph集群存储池操作相关话题，回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16743611.html；今天我们来聊一聊在c…

Python 2023年10月19日
0115
• #### python实现计算标准偏差函数

python实现计算标准偏差函数 原创 CorwinPC2022-07-18 17:49:37博主文章分类：Python ©著作权 文章标签 标准偏差公式 数据值 数据分布 算术平…

Python 2023年5月25日
0138
• #### 用Matplotlib绘制学生身高实例——直方图

对一个班级62个同学身高进行了统计，结果如下表所示 150,152,153,153,155,154,156,157,157,158, 158,158,157,159,159,160…

Python 2023年9月1日
0105

文章目录 前言 一、关于什么是pip * 1.什么是pip？ 2. 如何更新pip？ 3. 常用pip命令有哪些？ 二、安装虚拟环境virtualenv * 1.安装virtual…

Python 2023年8月14日
0109
• #### python中myfont_Pygame.font.font.呈现类型E

你需要先创建你的字体myfont = pygame.font.SysFont(None,10) # use default system font, size 10 那你就可以了 …

Python 2023年9月22日
091
• #### Ubuntu22.04 安装配置流水账

前两天为了测一个CH340的bug, 装了三遍20.04. bug解决完, 心想反正也要重新装各种软件, 不如直接装22.04吧. 把涉及的安装记录一下方便将来参考. 选项一: 使…

Python 2023年10月21日
0116
• #### 软件测试学什么-如何才能按时上线

上线，永远是软件测试工程师最关注的问题。上线以后，有bug,测试背；上线前，出问题，要加班。要保证项目按照正常进度发布，需要整个研发团队齐心协力。 有很多原因都可能会造成项目延期。…

Python 2023年6月11日
0110