iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python数据异常值检测和处理的示例分析
  • 822
分享到

Python数据异常值检测和处理的示例分析

2023-06-29 10:06:22 822人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍python数据异常值检测和处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 什么是异常值?在机器学习中,异常检测和处理是一个比较小的分支,或者说,是机器学习的一个副产物,因为在一般的预

这篇文章主要介绍python数据异常值检测和处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1 什么是异常值?

机器学习中,异常检测和处理是一个比较小的分支,或者说,是机器学习的一个副产物,因为在一般的预测问题中,模型通常是对整体样本数据结构的一种表达方式,这种表达方式通常抓住的是整体样本一般性的性质,而那些在这些性质上表现完全与整体样本不一致的点,我们就称其为异常点,通常异常点在预测问题中是不受开发者欢迎的,因为预测问题通产关注的是整体样本的性质,而异常点的生成机制与整体样本完全不一致,如果算法对异常点敏感,那么生成的模型并不能对整体样本有一个较好的表达,从而预测也会不准确。 从另一方面来说,异常点在某些场景下反而令分析者感到极大兴趣,如疾病预测,通常健康人的身体指标在某些维度上是相似,如果一个人的身体指标出现了异常,那么他的身体情况在某些方面肯定发生了改变,当然这种改变并不一定是由疾病引起(通常被称为噪音点),但异常的发生和检测是疾病预测一个重要起始点。相似的场景也可以应用到信用欺诈,网络攻击等等。

2 异常值的检测方法

一般异常值的检测方法有基于统计的方法,基于聚类的方法,以及一些专门检测异常值的方法等,下面对这些方法进行相关的介绍。

1. 简单统计

如果使用pandas,我们可以直接使用describe()来观察数据的统计性描述(只是粗略的观察一些统计量),不过统计数据为连续型的,如下:

df.describe()

Python数据异常值检测和处理的示例分析

或者简单使用散点图也能很清晰的观察到异常值的存在。如下所示:

Python数据异常值检测和处理的示例分析

2. 3∂原则

这个原则有个条件:数据需要服从正态分布。在3∂原则下,异常值如超过3倍标准差,那么可以将其视为异常值。正负3∂的概率是99.7%,那么距离平均值3∂之外的值出现的概率为P(|x-u| > 3∂) <= 0.003,属于极个别的小概率事件。如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。

Python数据异常值检测和处理的示例分析

红色箭头所指就是异常值。

3. 箱型图

这种方法是利用箱型图的四分位距(IQR)对异常值进行检测,也叫Tukey‘s test。箱型图的定义如下:

Python数据异常值检测和处理的示例分析

四分位距(IQR)就是上四分位与下四分位的差值。而我们通过IQR的1.5倍为标准,规定:超过上四分位+1.5倍IQR距离,或者下四分位-1.5倍IQR距离的点为异常值。下面是Python中的代码实现,主要使用了numpypercentile方法。

Percentile = np.percentile(df['length'],[0,25,50,75,100])IQR = Percentile[3] - Percentile[1]UpLimit = Percentile[3]+ageIQR*1.5DownLimit = Percentile[1]-ageIQR*1.5

也可以使用seaborn可视化方法boxplot来实现:

f,ax=plt.subplots(figsize=(10,8))sns.boxplot(y='length',data=df,ax=ax)plt.show()

Python数据异常值检测和处理的示例分析

红色箭头所指就是异常值。

以上是常用到的判断异常值的简单方法。下面来介绍一些较为复杂的检测异常值算法,由于涉及内容较多,仅介绍核心思想,感兴趣的朋友可自行深入研究。

4. 基于模型检测

这种方法一般会构建一个概率分布模型,并计算对象符合该模型的概率,把具有低概率的对象视为异常点。如果模型是簇的集合,则异常是不显著属于任何簇的对象;如果模型是回归时,异常是相对远离预测值的对象。

离群点的概率定义:离群点是一个对象,关于数据的概率分布模型,它具有低概率。这种情况的前提是必须知道数据集服从什么分布,如果估计错误就造成了重尾分布。

比如特征工程中的RobustScaler方法,在做数据特征值缩放的时候,它会利用数据特征的分位数分布,将数据根据分位数划分为多段,只取中间段来做缩放,比如只取25%分位数到75%分位数的数据做缩放。这样减小了异常数据的影响。

优缺点:(1)有坚实的统计学理论基础,当存在充分的数据和所用的检验类型的知识时,这些检验可能非常有效;(2)对于多元数据,可用的选择少一些,并且对于高维数据,这些检测可能性很差。

5. 基于近邻度的离群点检测

统计方法是利用数据的分布来观察异常值,一些方法甚至需要一些分布条件,而在实际中数据的分布很难达到一些假设条件,在使用上有一定的局限性。

确定数据集的有意义的邻近性度量比确定它的统计分布更容易。这种方法比统计学方法更一般、更容易使用,因为一个对象的离群点得分由到它的k-最近邻(KNN)的距离给定。

需要注意的是:离群点得分对k的取值高度敏感。如果k太小,则少量的邻近离群点可能导致较低的离群点得分;如果K太大,则点数少于k的簇中所有的对象可能都成了离群点。为了使该方案对于k的选取更具有鲁棒性,可以使用k个最近邻的平均距离。

优缺点:(1)简单;(2)缺点:基于邻近度的方法需要O(m2)时间,大数据集不适用;(3)该方法对参数的选择也是敏感的;(4)不能处理具有不同密度区域的数据集,因为它使用全局阈值,不能考虑这种密度的变化。

5. 基于密度的离群点检测

从基于密度的观点来说,离群点是在低密度区域中的对象。基于密度的离群点检测与基于邻近度的离群点检测密切相关,因为密度通常用邻近度定义。一种常用的定义密度的方法是,定义密度为到k个最近邻的平均距离的倒数。如果该距离小,则密度高,反之亦然。另一种密度定义是使用DBSCAN聚类算法使用的密度定义,即一个对象周围的密度等于该对象指定距离d内对象的个数。

优缺点:(1)给出了对象是离群点的定量度量,并且即使数据具有不同的区域也能够很好的处理;(2)与基于距离的方法一样,这些方法必然具有O(m2)的时间复杂度。对于低维数据使用特定的数据结构可以达到O(mlogm);(3)参数选择是困难的。虽然LOF算法通过观察不同的k值,然后取得最大离群点得分来处理该问题,但是,仍然需要选择这些值的上下界。

6. 基于聚类的方法来做异常点检测

基于聚类的离群点:一个对象是基于聚类的离群点,如果该对象不强属于任何簇,那么该对象属于离群点。

离群点对初始聚类的影响:如果通过聚类检测离群点,则由于离群点影响聚类,存在一个问题:结构是否有效。这也是k-means算法的缺点,对离群点敏感。为了处理该问题,可以使用如下方法:对象聚类,删除离群点,对象再次聚类(这个不能保证产生最优结果)。

优缺点:(1)基于线性和接近线性复杂度(k均值)的聚类技术来发现离群点可能是高度有效的;(2)簇的定义通常是离群点的补,因此可能同时发现簇和离群点;(3)产生的离群点集和它们的得分可能非常依赖所用的簇的个数和数据中离群点的存在性;(4)聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大。

7. 专门的离群点检测

其实以上说到聚类方法的本意是是无监督分类,并不是为了寻找离群点的,只是恰好它的功能可以实现离群点的检测,算是一个衍生的功能。

除了以上提及的方法,还有两个专门用于检测异常点的方法比较常用:One Class SVMIsolation Forest,详细内容不进行深入研究。

3 异常值的处理方法

检测到了异常值,我们需要对其进行一定的处理。而一般异常值的处理方法可大致分为以下几种:

  • 删除含有异常值的记录:直接将含有异常值的记录删除;

  • 视为缺失值:将异常值视为缺失值,利用缺失值处理的方法进行处理;

  • 平均值修正:可用前后两个观测值的平均值修正该异常值;

  • 不处理:直接在具有异常值的数据集上进行数据挖掘

是否要删除异常值可根据实际情况考虑。因为一些模型对异常值不很敏感,即使有异常值也不影响模型效果,但是一些模型比如逻辑回归LR对异常值很敏感,如果不进行处理,可能会出现过拟合等非常差的效果。

4 异常值总结

以上是对异常值检测和处理方法的汇总。

通过一些检测方法我们可以找到异常值,但所得结果并不是绝对正确的,具体情况还需自己根据业务的理解加以判断。同样,对于异常值如何处理,是该删除,修正,还是不处理也需结合实际情况考虑,没有固定的。

以上是“Python数据异常值检测和处理的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网Python频道!

--结束END--

本文标题: Python数据异常值检测和处理的示例分析

本文链接: https://www.lsjlt.com/news/324015.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python数据异常值检测和处理的示例分析
    这篇文章主要介绍Python数据异常值检测和处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 什么是异常值?在机器学习中,异常检测和处理是一个比较小的分支,或者说,是机器学习的一个副产物,因为在一般的预...
    99+
    2023-06-29
  • Python数据分析基础之异常值检测和处理方式
    目录1 什么是异常值?2 异常值的检测方法1. 简单统计2. 3∂原则3. 箱型图4. 基于模型检测5. 基于近邻度的离群点检测6. 基于聚类的方法来做异常点检测7. 专门...
    99+
    2024-04-02
  • Python之异常值检测和处理方式是什么
    这篇文章主要讲解了“Python之异常值检测和处理方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python之异常值检测和处理方式是什么”吧!1 什么是异常值?在机器学习中,异常检...
    99+
    2023-07-02
  • Python异常处理机制的示例分析
    这篇文章将为大家详细讲解有关Python异常处理机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是异常?def num(a, b):   ...
    99+
    2023-06-22
  • Python数据分析之缺失值检测与处理详解
    目录检测缺失值缺失值处理删除缺失值填补缺失值检测缺失值 我们先创建一个带有缺失值的数据框(DataFrame)。 import pandas as pd df = pd.Dat...
    99+
    2024-04-02
  • python数据分析中的异常值处理是怎样的
    本篇文章为大家展示了python数据分析中的异常值处理是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。异常值异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称离群点,异常值的分析...
    99+
    2023-06-29
  • MySQL异常处理的示例分析
    这篇文章给大家分享的是有关MySQL异常处理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。针对存储过程 、触发器或函数内部语句可能发生的错误或警告信息,需要进行相关异常...
    99+
    2024-04-02
  • Angular4中脏值检测的示例分析
    这篇文章将为大家详细讲解有关Angular4中脏值检测的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SummaryAngular 4的脏值检测是个老话题了,而理...
    99+
    2024-04-02
  • MySQL游标和异常处理的示例分析
    这篇文章给大家分享的是有关MySQL游标和异常处理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。复杂异常处理drop procedure ...
    99+
    2024-04-02
  • python异常时语句处理的示例分析
    这篇文章给大家分享的是有关python异常时语句处理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌...
    99+
    2023-06-14
  • python数据分析实战指南之异常值处理
    目录异常值1、异常值定义2、异常值处理方式2.1 均方差2.2 箱形图3、实战3.1 加载数据3.2 检测异常值数据3.3 显示异常值的索引位置总结异常值 异常值是指样本中的个别值,...
    99+
    2024-04-02
  • python中文件操作和异常处理的示例分析
    这篇文章主要介绍python中文件操作和异常处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、 文件的操作1.1创建文件格式:f = open(‘文件', ‘w')或者f = open(...
    99+
    2023-06-22
  • React16中异常处理的示例分析
    这篇文章主要介绍React16中异常处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!异常处理在 React 15.x 及之前的版本中,组件内的异常有可能会影响到 Reac...
    99+
    2024-04-02
  • Java中异常处理的示例分析
    这篇文章主要介绍Java中异常处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!异常的定义在java中,异常就是java在编译、运行或运行过程中出现的错误总共有三种:1.编译错误 2.运行错误 3.逻辑错误...
    99+
    2023-06-25
  • Python异常处理实例分析
    这篇文章主要讲解了“Python异常处理实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python异常处理实例分析”吧!那么什么是异常呢?举个例子:这里当然假设用户的输入是正确的,但...
    99+
    2023-07-02
  • Python异常处理举例分析
    这篇文章主要讲解了“Python异常处理举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python异常处理举例分析”吧!异常处理在项目开发中,异常处理是不可或缺的。异常处理帮助人们d...
    99+
    2023-06-02
  • PHP中如何进行异常数据检测和处理?
    在编写PHP应用程序时,异常数据可能会在很多情况下出现。例如,用户提交的表单数据可能会包含不合法的输入,像特殊字符或过长的文本。在这种情况下,应该对异常数据进行有效的检测和处理,以避免安全漏洞或程序崩溃的发生。本篇文章将介绍PHP中如何进行...
    99+
    2023-05-22
    异常处理 数据检测 PHP
  • python中with和异常处理实例分析
    这篇“python中with和异常处理实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python中with和异常处理...
    99+
    2023-06-27
  • Python中的异常处理实例分析
    一、什么是异常在python中,错误触发的异常如下二、异常的种类在python中不同的异常可以用不同的类型去标识,一个异常标识一种错误。1 、常用异常类AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有...
    99+
    2023-05-16
    Python
  • YII2全局异常处理的示例分析
    这篇文章主要介绍了YII2全局异常处理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先,我们必须理性认识到,任何一个即使稳定的系统中也是存在着大量的 bug,不管...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作