关于人工智能:快速找到离群值的三种方法

54次阅读

共计 2239 个字符,预计需要花费 6 分钟才能阅读完成。

本文将介绍 3 个在数据集中查找离群值的 Python 办法

离群值(Outliers)是指在数据集中与其余数据点显著不同或者异样的数据点。这些数据点可能比其余数据点要远离数据集的核心,或者具备异样的数值。离群值可能是因为数据采集谬误、异样事件、测量误差或者其余未知因素引起的。

离群值的存在能够对数据分析和统计建模产生重要影响,因为它们可能导致模型不精确或者产生误导性的后果。

咱们先创立一个演示的数据

 import pandas as pd
 import matplotlib.pyplot as plt
 
 name = ['John', 'Victor', 'Carlos', 'Leo', 'Kevin', 'Silva', 'Johnson', 'Lewis', 'George', 'Daniel', 'Harry', 'Jordan', 'James']
 salary = [4000, 1000, 2000, 100000, 3500, 6000, 1500, 3000, 2500, 3600, 2100, 1700, 1600]
 
 df = pd.DataFrame({'Name': name, 'Salary': salary})
 
 plt.boxplot(df['Salary'])
 plt.show()

能够看到下面的点就是离群值,上面咱们将介绍疾速找到它的办法。

四分位极差法

首先找到第一和第三个四分位数值,通常记为 Q1 和 Q3。而后用 Q3 减去 Q1 计算四分位差 (IQR)。

通过减去 / 减少 1.5 倍 IQR 来计算下界和上界。高低边界外的值就是离群值

 q1 = df['Salary'].quantile(0.25)
 q3 = df['Salary'].quantile(0.75)
 iqr = q3 - q1
 
 lower_bound = q1 - 1.5 * iqr
 upper_bound = q3 + 1.5 * iqr
 
 outliers = df[(df['Salary'] < lower_bound) | (df['Salary'] > upper_bound)]

1.5 倍 IQR 的阈值通常是一种罕用的规范,阈值的抉择能够依据具体情况进行调整。有时候,也能够抉择更严格或更宽松的阈值,以适应特定的数据分析需要。

标准偏差法

标准偏差法(Standard Deviation Method)应用数据的标准差来判断数据点是否偏离了数据。上界和下界是均值和 3 倍标准差的加减。

他的办法如下:

计算平均值和标准偏差: 首先,计算数据的平均值(Mean)和标准偏差(Standard Deviation)。平均值代表了数据的核心地位,标准偏差掂量了数据的扩散水平。

确定阈值: 定义一个阈值,通常是标准偏差的倍数(通常为 2 或 3 倍标准偏差)。这个阈值决定了什么样的数据点被认为是离群值。

辨认离群值: 计算每个数据点与平均值之间的差值,而后将这个差值与阈值比拟。如果差值超过了阈值,数据点被认为是离群值。

 mean = df.Salary.mean()
 std = df.Salary.std()
 
 upper_bound = mean + 3 * std
 lower_bound = mean - 3 * std
 
 outliers = df[(df['Salary'] < lower_bound) | (df['Salary'] > upper_bound)]

标准偏差法的长处在于简略易懂,而且不须要假如数据分布的形态。但须要留神以下几点:

  • 通常状况下,阈值应用 2 或 3 倍标准偏差作为阈值,但这个值可能须要依据具体情况进行调整。
  • 这种办法对于正态分布的数据集成果较好,但对于偏斜散布的数据,可能会导致误判。
  • 标准偏差法可能不适用于小样本,因为标准偏差在小样本中可能不够稳固。

Z- 分数法

Z- 分数(Z-Score)法测量了数据点与数据集平均值之间的偏差,以标准化形式示意这个偏差。对于每个数据点,计算它与平均值之间的差值,而后将这个差值除以标准偏差,失去 Z - 分数。如果 z -score 大于 3.0 或小于 -3.0,则该值可归类为离群值。

咱们能够间接应用 scipy 提供的函数来进行计算

 from scipy import stats
 
 df['Salary_zscore'] = stats.zscore(df['Salary'])
 filtered_df = df[(df['Salary_zscore'] <= 3) & (df['Salary_zscore'] >= -3)]

Z- 分数法实用于各种类型的数据分布,不须要假如数据分布的形态。并且提供了标准化的度量,使得不同数据集之间的离群值比拟更加容易。

总结

以上是能够疾速找到离群值的统计学办法,除此以外,还有一些机器学习的办法例如:

DBSCAN(Density-Based Spatial Clustering of Applications with Noise): DBSCAN 是一种密度聚类算法,也可用于检测离群值。它依据数据点的密度来辨认离群值,将密度较低的点视为离群值。

LOF(Local Outlier Factor): LOF 是一种部分离群值因子办法,用于检测部分区域内的离群值。它思考了每个数据点四周的部分密度与相邻点的密度之间的比率,从而辨认离群值。

Isolation Forest: Isolation Forest 是一种基于随机森林的离群值检测办法,它通过构建树结构来辨认离群值。因为应用了随机性,它对高维数据和大数据集十分无效。

然而这些办法执行的速度会很慢,如果对于速度要求比拟严格还是须要审慎抉择。

https://avoid.overfit.cn/post/2f9d9254f3a146bcb116f680906ec66a

正文完
 0