📅  最后修改于: 2023-12-03 14:49:26.895000             🧑  作者: Mango
箱线图(Box-Plot)是用来展示一组数据离散程度的图表,通过它我们可以观察到数据的最大值、最小值、中位数、四分位数等。箱线图也可以用来帮助我们检测异常值。本文将会介绍如何从箱线图中提取异常值。
异常值是指数据集中与其他值明显不同、极端偏离其他值的数值。例如,一组数字中,如果一个数与其他数相差十分巨大,则这个数为异常值。
以下是一个箱线图的示例:
在箱线图中,箱子的左侧为下四分位数(25%),右侧为上四分位数(75%),中间为中位数(50%),IQR为四分位距(上四分位数减去下四分位数的距离),上下两个横线分别为最小值和最大值。在箱线图中,我们可以使用一些指标来判断数据是否有异常值。
使用箱线图来检测异常值通常会使用一个公式:任何小于Q1 − 1.5IQR 或大于Q3 + 1.5IQR的数值就被认为是一个异常值。其中Q1是下四分位数,Q3是上四分位数,IQR是Q3和Q1的差距。我们可以利用这个公式,找到箱子之外的异常值。
我们可以使用 Python 的 Matplotlib 库来绘制箱线图。以下是一个简单的 Python 代码片段,它绘制了一个箱线图并提取了异常值:
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
np.random.seed(10)
data = np.random.normal(100, 20, 200)
# 绘制箱线图
fig, ax = plt.subplots(figsize=(6, 4))
ax.boxplot(data)
# 提取异常值
q1, q3 = np.percentile(data, [25, 75])
iqr = q3 - q1
upper_bound = q3 + 1.5 * iqr
lower_bound = q1 - 1.5 * iqr
outliers = data[(data > upper_bound) | (data < lower_bound)]
print("异常值:", outliers)
代码中的 data
变量是一组随机数据,我们绘制了一个箱线图并计算了异常值。运行该代码,我们可以得到以下结果:
异常值: [139.540257 139.561307 139.571611 139.131917 139.019724]
在本例中,这些数值都比上限(179.76963788445617)大得多,它们被认为是异常值。
使用箱线图来检测异常值可以帮助我们识别数据中的潜在问题。在实际使用中,我们可以通过比较计算出来的数值和实际数据中的值来检查异常值。注意,异常值并不总是不合理的值,但是它们可能会对我们的数据分析造成影响。