数据清洗中异常值(离群值)的判别和处理方法

前天参加面试的时候被问了一个题:选择什么样的指标来代表总体情况?我回答的不是很好,具体怎么回答的记不太清了,感觉回答的不是很好。回来后吸取教训,查了查资料简单总结:

  • 如果是类别变量,可以用众数来代表总体。
  • 如果是连续变量,可以用平均数或中位数来代表总体。如果数据的异常值、极端异常值比较多,那么尽可能使用中位数;如果没有太明显的异常值,平均数更具有代表性。

那这里就引申出一个问题,异常值的识别。异常值(outlier)是数据清洗的重要环节,异常值可能直接会导致后面的数据分析、建模工作出现偏差,因为像AdaBoost、GBDT等都对异常值很敏感。

异常值甄别

1、3σ准则

如果样本是正态分布或近似正态分布,可以考虑使用方法,认为99%以上的数据集中在均值上下3个标准差的范围内。具体来说,数值分布在(μ-3σ,μ+3σ)中的概率为99.73%,超过这个范围的极大或极小值,那就是异常值了。

实例
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 导入试验数据
df = pd.read_csv(r'F:\数据分析项目\游戏数据分析\野蛮时代数据分析\tap_fun_train.csv')
# 从中取出100个数,先做一个直方图看看分布状态
df = df[df['wood_add_value']>0].head(100)
sns.distplot(df['wood_add_value'])

从图上看出来,其实不算是很标准的正态分布,但就凑合用吧,能说明排查方法和过程就好。
在这里插入图片描述

  • 计算均值。a = df['wood_add_value'].mean(),均值为781190.89
  • 然后计算标准差。b = df['wood_add_value'].std(),标准差为2196896.04
  • 计算排查范围:(a-3*b, a+3*b)得到结果:(-5809497.23,7371879.01)
  • 使用上述区间作为条件进行筛选就可以,df[(df['wood_add_value']>7371879)|(df['wood_add_value']<-5809497)]['wood_add_value'],得出异常值为:15968730、9669530、8668980
2、使用箱型图

箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。(百度百科)
还是以wood_add_value为例,因为由于这个数值受要塞等级bd_stronghold_level的影响非常大,所以做了不同要塞等级的箱型图分布。

使用seaborn绘图
df2 = df[df['wood_add_value']>0] # 没有任何数值记录说明没玩游戏,所以没有分析的意义
plt.figure(figsize = (18,8))
sns.boxplot(x = df2['bd_stronghold_level'],y = df2['wood_add_value'])

在这里插入图片描述
随便选其中的一个等级,比如就15级吧,说明箱型图的意义。

df3 = df2[df2['bd_stronghold_level']==15]
plt.figure(figsize = (8,6))
sns.boxplot(x = df3['bd_stronghold_level'],y = df3['wood_add_value'],width = 0.2)

在这里插入图片描述
非异常值的范围都在上限和下限之间,超出上限和下限的就定位为异常值。

使用DataFrame自带的绘图工具

这种方法不仅可以绘图,还可以方便的输出具体的异常值是哪些。

由于只有DataFrame格式可以使用,所以数据不能是Series格式

df4 = df3[['bd_stronghold_level','wood_add_value']]
plt.figure(figsize = (8,6))
outlier = df4.boxplot(return_type = 'dict')
x = outlier['fliers'][1].get_xdata() # 这个get_xdata我不太清楚啥意思,可能是表示哪一个column的异常值。
y = outlier['fliers'][1].get_ydata() # 具体的异常值是什么
y1 = list(y)
print(y1)
Out[92]: [327291568.0, 539691776.0, 765436570.0, 498063299.0]

在这里插入图片描述
最后得出15级要塞的wood_add_value的异常值是这些:[327291568.0, 539691776.0, 765436570.0, 498063299.0]。实际处理中,除了箱型图进行客观的排查,还可以加入主观判断,对于超出范围的值,如果超出范围不是非常大,可以看做正常值。

异常值处理

异常值已经被找出来了,那么怎么处理呢?实际处理中没有固定的方法,要根据分析的目的来确定。

  • 删除。如果想找出一般的规律,而且异常值也不太多,可以考虑删除。因为异常值可能会影响结论。很多节目中计算选手最后得分往往去掉一个最高分,去掉一个最低分,可能就是这个道理。比如我们现在研究就是要塞等级bd_stronghold_level为15级的玩家的道具消耗特征,这时候异常值显然会拉高整体的水平,影响判断,所以可以考虑删除,我们要了解大多数玩家。

  • 放任不管。因为异常值代表的也是真实发生的事件,背后是具体的行为。有些值即使异常,也不会影响模型。比如我们研究wood_add_valuepay_price的关系,想做回归分析,也就是看道具消耗和充值金额的因果关系。我们能够很清楚的看到刚才找到的wood_add_value的4个异常值,虽然他们游离于群体之外,但是在对pay_price进行拟合的时候并没有使模型造成太大偏差。所以这种异常值对我们的模型来说很合理。

plt.figure(figsize = (12,6))
plt.subplot(1,2,1)
sns.scatterplot(x='wood_add_value', y='pay_price',data = df3)
plt.subplot(1,2,2)
sns.regplot(x='wood_add_value', y='pay_price',data = df3)

在这里插入图片描述

  • 视为缺失值进行填充。因为贸然删除数据可能会损失信息,而如果放任不管可能又影响我们的模型,所以可以考虑用均值、临近值进行填充。如下面这个例子,依旧是用wood_add_valuepay_price进行回归预测(样本不一样了)。从图上看绿圈和红圈那两个点,有可能会影响回归线的方向(蓝色线是python拟合的,绿线和红线是我自己画的)。所以这种异常值还是处理掉比较好。
sns.scatterplot(x='wood_add_value', y='pay_price',data = df2)

在这里插入图片描述
异常值到底该怎么处理,我也在学习。在用户分层的时候,发现异常值代表了一些极端的高价值用户,ARPU可能是平均水平的几千倍,可能也是需要把极端值单独提取出来,对用户进行实时的“监控”,这类用户流失造成的损失实在太大了。还有就是异常值的甄别和处理可能还有很多其他方法,目前我也还没学,暂且如此吧,且用且学且记。

dhr223
关注 关注
  • 56
    点赞
  • 291
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习数据预处理离群值/异常值:MAD法(绝对值差位数法)+绝对位差(Median Absolute Deviation,MAD)
data+scenario+science+insight
08-26 4428
机器学习数据预处理离群值/异常值:MAD法(绝对值差位数法)+绝对位差(Median Absolute Deviation,MAD) garbage in,garbage out. 异常值分析师和数据科学家常用的术语,因为它需要密切注意,否则可能导致错误的估计。 简单来说,异常值是一个观察值,远远超出了样本的整体模式。 异常值在统计学上的全称是疑似异常值,也称作离群点(outlier),异常值分析也称作离群点分析异常值是指样本出现的“极端值”,数据值看起来异常大或异常小,其分布明显
离群值的识别方式
weixin_43368684的博客
07-27 9224
箱式图方法 箱式图使用了变量的5个指标构成:最小值,下四分位数(P25),位数(P50),上四分位数(P75)和最大值。P25,P50和P75构成“箱体”部分,“箱体”间的横线表示P50,即位数; 如何观察异常值? 四分位距IQR=Q3-Q1 上限是非异常范围内的最大值, 上限=Q3+1.5IQR 下限是非异常范围内的最小值,下限=Q1-1.5IQR 拉依达准则 适用于服从正态分布的数据。需要计算出数据的均值(μ)和标准差(σ),大于μ+3σ或小于μ-3σ的数值为离群值 马氏距离法 马氏距离法
数据挖掘:数据清洗——异常值处理
01-20
数据挖掘:数据清洗——异常值处理 一、离群点是什么? 离群点,是一个数据对象,它显著不同于其他数据对象,与其他数据分布有较为显著的不同。有时也称非离群点为“正常数据”,离群点为“异常数据”。 离群点跟噪声数据不一样,噪声是被观测变量的随机误差或方差。一般而言,噪声在数据分析(包括离群点分析不是令人感兴趣的,需要在数据预处理剔除的,减少对后续模型预估的影响,增加精度。 离群点检测是有意义的,因为怀疑产生它们的分布不同于产生其他数据的分布。因此,在离群点检测时,重要的是搞清楚是哪种外力产生的离群点。 常见的异常成因: 数据来源于不同的类(异常对象来自于一个与大多数数据对象源(类)不同的源(类
【转】数据清洗异常值离群值)的判别处理方法
遗世独立的乌托邦
11-05 2561
数据清洗异常值离群值)的判别处理方法 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/dhr223/article/details/107086239 感谢dhr223的分享,仅作学术交流,如有侵权-联系后台删除~ 觉得有用的话,欢迎一起讨论相互学习~ 前天参加面试的时候被问了一个题:选择什么样的指标来代表总体情况?我回答的不是很好,具体怎么回答的记不太清了,感觉回答的不是很好。回来后
数据预处理|数据清洗|使用Pandas进行异常值清洗
最新发布
benxuu的博客
03-15 1490
数据预处理|数据清洗|使用Pandas进行异常值清洗
python】数据挖掘分析清洗——离群点(异常值)处理方法汇总
weixin_47058355的博客
04-23 8850
异常值处理的意义在于提高数据分析的准确性和可靠性。异常值往往会影响数据的统计特征,如平均值、方差等,从而导致错误的结论或预测结果。此外,异常值还可能干扰模型的拟合效果,使得模型对数据的解释能力变弱。因此,对于数据分析任务,我们通常需要进行异常值处理,以尽可能保证数据的质量和准确性。常用的异常值处理方法包括删除异常值、替换异常值、将异常值视为缺失值等。具体方法需要根据数据类型和任务要求来选择和实施。传送门。
R语言︱异常值检验、离群点分析异常值处理
热门推荐
素质云笔记
04-21 11万+
笔者寄语:本文是《R语言数据分析与挖掘实战》 异常值处理一般分为以下几个步骤:异常值检测、异常值筛选、异常值处理。 其异常值检测的方法主要有:箱型图、简单统计量(比如观察极值) 异常值处理方法主要有:删除法、插补法、替换法。 提到异常值不得不说一个词:鲁棒性。就是不受异常值影响,一般是鲁棒性高的数据,比较优质。 一、异常值检验 异常值大概包括缺失值、离群值、重复值
GB4883-2008-T 数据的统计处理和解释 正态样本离群值的判断和处理
03-04
作为能力验证数据分析处理的依据.怎么样判断是否是正态分布
如何在数据流轻松检测异常值-离群值
张伟的专栏
05-26 2054
一种简单的方法,可通过Python实现在数据流查找异常值 在上一篇文章,我解释了流算法的概念,并给出了许多如何应用流算法的示例。 其之一是在不保存数据流元素的情况下计算数据流的滚动平均值。 现在,我想扩展这个示例,并在异常值检测的背景下向您展示另一种流算法的用例。 当我们监视机器的功耗以检测任何异常行为时,可能会出现类似的问题。 如果我们发现异常值有所增加(异常观察),则可能表明这台机器的默认值,可能值得检查。 定义和示例 离群值可以通过多种方式定义。 在本文,我们将使用以下定义:...
数据预处理-离群值检测与处理
老Liu的博客
03-01 7548
@数据分析处理 离群值检测 回归 3σ法 样本x和样本均值μ之间的距离,而且这个距离以标准差σ为单位进行计算:Z-score(x)=(x-μ)/σ 得到样本的Z-score值后,通常将满足条件|Z-score(x)|>3的样本视为离群值称为3σ法。 箱线图 是检验样本数据异常值的常用方法,与3σ法不同,箱形图法既可以用作服从正态分布样本数据异常值判断,也可以用作不服从正态分布样本数据异常值判断,适用范围广。 箱线图由最大值、上四分位数(Q3)、位数(Q2)、下四分位数(Q1)和最小值五个统计量
回归分析异常值的诊断与处理.pdf
10-14
因此,诊断和处理异常值是保证原始数据可靠性和统计分析结果可靠性的重要步骤。本文讨论了异常值的概念、诊断方法处理方法,并结合实例说明了简单回归上述方法的具体应用。 一、异常值的概念 异常值是指在统计...
python实现拉依达准则处理异常数据
02-14
首先本项目的数据来源于参加的数学建模比赛官方C题提供的相关数据,由于在进行建模和数据分析时,发现预处理的数据存在随机异常性、离散性等不利于模型分析的性质,所以使用了拉依达准则对数据进行处理,而python的...
基于密度的数值海量数据离群值检测方法
04-11
随着Internet的发展产生了大量的数据,离群值的检测和有效信息的获取成为... 实验结果表明,基于最大距离乘积的聚类心初始化方法提高了聚类效率,所提算法在数值属性离群值检测具有更好的精度,可扩展性和加速比。
LinRegOutliers:线性回归离群值检测的直接和强大方法
05-22
LinReg异常值用于线性回归异常值检测的Julia软件包。实施方法普通最小二乘,加权最小二乘,基本诊断哈迪与西蒙诺夫(1993) Kianifard和Swallow(1989) 塞伯特与蒙哥马利与罗里尔(1998) 正方形的最小位数最小...
【gloomyfish】数据分析之 – 离群值(Outliers) BoxPlot
关注微信公众号【OpenCV学堂】
05-01 4万+
数据分析之 – 离群值(Outliers)   一:什么是Outliers Outliers是统计学专业术语,是指相比一组数据的其它数据的极限值   二:极限值意味什么  1. 决定哪些值是Outliers是一个主观行为,有一些基准数据来决定是否一个值是一个Ou
R语言离群值处理分析
weixin_33895695的博客
06-21 4742
数据异常值可能会使预测失真并影响准确性,尤其是在回归模型,如果您没有正确检测并处理它们,那么它们会影响精度 为什么异常值检测很重要? 在真实观察处理或改变异常值/极端值不是标准操作程序。但是,了解它们对预测模型的影响至关重要。留待调查人员判断是否需要治疗异常值以及如何去做。 那么,为什么识别极端值很重要?因为,它可以大大偏倚/改变合适的估计和预测。让我使用cars数据集来说明这一点。...
离群值检测
weixin_33881041的博客
11-29 7783
离群值检测 离群值 outlier:样本的一个或几个观测值,它们离其他观测值较远,暗示它们可能来自不同的总体。 离群值分类 总体固有变异性的极端表现,这类离群值与样本的其余观测值属于统一总体; 由于试验条件和试验方法的偶然偏离所产生的结果,或产生与观察、记录、计算的失误,这类离群值与样本其余观测值不属于统一总体。 数学小知识 方差: 标准差: ​ 标准差能反映一个数据集的离散程度。 ...
剔除离群值进行数据平滑处理的matlab方法
05-13
在MATLAB,可以使用一些函数来进行数据平滑处理,其一种方法是通过剔除离群值。以下是一个基本的流程: 1. 首先,使用MATLAB的`boxplot`函数或其他相关函数来识别数据集离群值。 2. 接下来,通过将离群值替换为数据集的平均值或位数来剔除离群值。这可以使用MATLAB的`median`或`mean`函数来完成。 3. 然后,使用`smoothdata`函数来平滑处理数据集。该函数可以使用多种平滑算法,包括移动平均和loess平滑。 例如,假设你有一个包含离群值的数据集`data`,你可以使用以下代码进行平滑处理: ``` % 识别离群值 boxplot(data) % 剔除离群值并替换为位数 data(data > upper) = median(data) data(data < lower) = median(data) % 进行平滑处理 smoothed_data = smoothdata(data, 'movmean', 5) % 使用移动平均进行平滑处理 ``` 在这个例子,`upper`和`lower`是通过`boxplot`函数计算出的上下限。然后,使用`median`函数将离群值替换为位数,并使用`smoothdata`函数进行平滑处理,使用移动平均方法,窗口大小为5。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 数据清洗中异常值(离群值)的判别和处理方法 45279
  • python聚类分析实现电商用户细分(基于RFM用户价值分析模型) 11742
  • 用SQL提取用户首次下单的信息(金额、时间) 10751
  • 某策略游戏(SLG)数据分析:新增、付费和活动效果评估 8465
  • (超详细一文看懂)MySQL累计求和问题及窗口函数order by的原理 8086

最新评论

  • 某策略游戏(SLG)数据分析:新增、付费和活动效果评估

    2201_75802477: 大佬你好,请问可以分享一下数据集吗,邮箱2660457399@qq.com,感恩

  • (超详细一文看懂)MySQL累计求和问题及窗口函数order by的原理

    uglyjack1121: 有个问题就是第一个方法左连接,如果是1第三次登陆,那么它还是只会第一次登陆的那一次吧,不太懂为啥可以累加

  • python聚类分析实现电商用户细分(基于RFM用户价值分析模型)

    cky203710: 1.3.0版本也要再升级吗

  • 用SQL提取用户首次下单的信息(金额、时间)

    dhr223: 感谢,窗口函数确实更便捷

  • 用SQL提取用户首次下单的信息(金额、时间)

    沫沫酱qwq: 可以直接用in子查询 ,或者窗口函数,不需要用表连接

大家在看

  • 2024设计师必学的AI视觉课,AIGC辅助设计实操教学(43节课) 341
  • 贝叶斯算法-拼写检查器背后技术详解
  • Python中方括号和括号括起来的列表有什么区别?
  • PHP框架CI开发的内容付费问答解惑系统+seo优化 43
  • 阿里也出手了!Spring CloudAlibaba AI问世了 774

最新文章

  • 朴素贝叶斯法学习笔记
  • L1和L2正则化为什么能缓解过拟合问题?
  • (超详细一文看懂)MySQL累计求和问题及窗口函数order by的原理
2023年2篇
2020年11篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司雅安百姓网标王推广价格蚌埠SEO按天扣费推荐遂宁网站推广系统公司宣城百度网站优化排名丽水seo网站优化价格长沙网站关键词优化报价白山seo优化推荐蚌埠营销网站哪家好恩施营销型网站建设价格金昌网站建设设计多少钱黄冈优化沧州关键词按天扣费报价宜宾SEO按天扣费价格南平网站优化推广价格济宁外贸网站建设报价江门seo排名光明网站推广工具公司贵港品牌网站设计哪家好文山百度竞价包年推广公司盐田网站优化排名多少钱鹤壁网站推广工具公司潜江网站关键词优化哪家好鹤壁设计网站大运网站推广系统哪家好临夏SEO按天收费价格遂宁seo优化价格朝阳百度关键词包年推广公司平凉网站建设设计哪家好濮阳seo排名多少钱辽源百度关键词包年推广多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化