检测异常值是数据预处理中非常重要的一步,因为异常值可能会影响模型的训练效果,甚至导致错误的结论。以下是几种常见的检测异常值的方法:
1. 箱线图(Box Plot):
箱线图是一种简单的统计图形,可以直观地显示数据的分布情况及其离群点(异常值)。在箱线图中,异常值通常定义为超出“盒须”范围的点。
-
IQR(四分位距)方法:
- 箱线图的盒子代表数据的第一四分位数(Q1,25%)和第三四分位数(Q3,75%)。
- 四分位距(IQR)定义为 Q3 - Q1。
- 异常值通常定义为小于 Q1 - 1.5 * IQR 或大于 Q3 + 1.5 * IQR 的数据点。
import pandas as pd import numpy as np import matplotlib.pyplot as plt # 示例数据 data = np.random.randn(100) # 生成100个正态分布的数据点 data = np.append(data, [10, -10]) # 添加几个异常值 # 绘制箱线图 plt.boxplot(data) plt.show() # 使用IQR方法检测异常值 Q1 = np.percentile(data, 25) Q3 = np.percentile(data, 75) IQR = Q3 - Q1 lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR outliers = data[(data < lower_bound