异常值检测的提示工程
通过实际数据项目学习如何检测异常值,并利用AI改进流程。
介绍
给定数据集中的离群值代表极端值。它们极端到可以通过严重扭曲统计数据(比如均值)来毁掉你的分析。例如,在球员身高数据集中,12英尺即使是NBA球员也是个异常值,会显著拉高平均值。
我们该如何应对?我们将通过在数据科学家招聘过程中,Physician Partners要求的真实数据项目来回答这个问题。
首先,我们将探讨检测方法,定义异常值,最后设计执行流程的提示。
什么是异常值检测和移除方法?
异常值检测取决于你拥有的数据集。如何?
例如,如果你的数据集分布是正态的,你可以用标准差或Z分数来检测它们。然而,如果你的数据集不遵循正态分布,可以使用百分位法、主成分分析(PCA)或四分位数间距(IQR)方法。
你可以查看**这篇文章**,了解如何使用箱形图检测异常值。
在本节中,我们将探索应用这些技术的方法论和Python代码。
标准差法
在这种方法中,我们可以通过测量每个值偏离均值的程度来定义离群值。
例如,在下面的图表中,你可以看到正态分布和均值的标准差 \(\pm3 \)。
使用此方法时,首先测量平均值并计算标准差。接下来,通过对均值加减三个标准差来确定阈值,并过滤数据集,只保留该范围内的数值。这里是执行此作的**Pandas**代码。
importpandasaspdimportnumpyasnp col=df['column']mean=col.mean()std=col.std()lower=mean-3*std upper=mean+3*std# Keep values within the 3 std dev rangefiltered_df=df[(col>=lower)&(col<=upper)]我们有一个假设:数据集应遵循正态分布。什么是正态分布?这意味着数据呈现均衡的钟形分布。这里有一个例子:
使用这种方法,你会标记大约0.3%的数据为异常值,因为3个标准差的均值覆盖了大约99.7%的数据。
IQR
四分位区间(IQR)代表你数据的中间50%,显示数据集中最常见的数值,如下图所示。
要用 IQR 检测异常值,首先计算 IQR。在下一段代码中,我们定义第一和第三四分位数,并从第三个四分位数中减去第一四分位数,得到 IQR (\( 0.75 - 0.25 = 0.5 \))。
Q1=df