当前位置: 首页 > news >正文

【漫话机器学习系列】264.内距(又称四分位差)Interquartile Range

深入理解内距(Interquartile Range,IQR)——数据分析中的异常值利器

在日常的数据分析中,我们经常需要识别和处理异常值(Outliers),而内距(Interquartile Range,简称 IQR)是一个非常实用的工具。本文将通过一张直观的图示,深入讲解 IQR 的概念、计算方法及其在异常值识别中的重要作用。


一、什么是内距(IQR)?

内距(Interquartile Range) 又称 四分位差,是描述数据分布集中趋势和离散程度的一种重要统计量。

它定义为:

\text{IQR} = Q3 - Q1

其中:

  • Q1:第一四分位数(25%分位数)

  • Q3:第三四分位数(75%分位数)

IQR 表示的是中间 50% 数据的跨度,即从 25% 到 75% 之间数据的范围,能有效排除极端值的影响。


二、图示解读:IQR 与箱型图的关系

下面是 Chris Albon 的一张经典图解,非常直观地展示了 IQR 在箱型图(Boxplot)中的作用。

图中关键说明:

  1. 中间的盒子部分 表示从 Q1 到 Q3,即 IQR 范围。

  2. 盒子中间的竖线 表示中位数(Q2),也称第 2 四分位数。

  3. 左侧边缘线 是 Q1 - 1.5 × IQR,称为“下边缘值”。

  4. 右侧边缘线 是 Q3 + 1.5 × IQR,称为“上边缘值”。

  5. 边缘线以外的值 即为可能的异常值(Outliers)。


三、IQR 异常值判断准则

使用 IQR 判断异常值的方法,是统计分析中最常见也最稳健的方法之一:

  • 异常值判定区间

    • 低于 Q1−1.5×IQR

    • 高于 Q3+1.5×IQR

更严格时,可以使用:

  • 极端异常值判定:

    • 低于 Q1−3×IQR

    • 高于 Q3+3×IQR

这种方法相比于标准差法(均值 ± n × 标准差)更不容易受极端数据的影响,尤其适合非正态分布的数据集。


四、IQR 实战应用场景

  1. 数据清洗
    利用 IQR 自动识别并剔除异常值,提高数据质量。

  2. 可视化分析(箱型图)
    快速判断数据是否偏态、是否存在离群点。

  3. 机器学习特征工程
    对离群值进行截断处理或归一化前的预处理,提升模型鲁棒性。


五、代码实操(以 Python 为例)

import numpy as np# 示例数据
data = np.array([10, 12, 13, 14, 15, 16, 100])# 计算 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) | (data > upper_bound)]print("IQR:", IQR)
print("异常值:", outliers)

输出结果会识别出 100 这个远离其余数据点的异常值。


六、总结

  • IQR 是一种稳健的离散度量,适合用于非正态分布的数据。

  • 在数据分析、可视化和特征工程中都有广泛应用。

  • 搭配箱型图使用,能非常直观地识别异常点。


如果你觉得这篇文章有帮助,欢迎点赞、收藏、关注我,一起深入学习更多数据科学与机器学习的实用知识!

http://www.xdnf.cn/news/496603.html

相关文章:

  • 抽奖系统-抽奖
  • uni-app小程序登录后…
  • 数据分析_Python
  • arduino平台读取鼠标光电传感器
  • MATLAB学习笔记(七):MATLAB建模城市的雨季防洪排污的问题
  • Elasticsearch 性能优化面试宝典
  • LabVIEW声音与振动测量分析
  • STM32实战指南:SG90舵机控制原理与代码详解
  • Qt与Hid设备通信
  • 392. Is Subsequence
  • 天拓四方锂电池卷绕机 PLC 物联网解决方案
  • 从零开始认识 Node.js:异步非阻塞的魅力
  • Go语言 GORM框架 使用指南
  • c/c++的opencv模糊
  • exit耗时高
  • PYTHON训练营DAY28
  • AMD Vivado™ 设计套件生成加密比特流和加密密钥
  • 【React中虚拟DOM与Diff算法详解】
  • 免费商用字体下载
  • STM32IIC协议基础及Cube配置
  • 创建react工程并集成tailwindcss
  • C++(20): 文件输入输出库 —— <fstream>
  • Pytorch实现常用代码笔记
  • 从代码学习深度学习 - 词嵌入(word2vec)PyTorch版
  • 05、基础入门-SpringBoot-HelloWorld
  • 页面上如何显示特殊字符、Unicode字符?
  • 【001】RenPy打包安卓apk 流程源码级别分析
  • ProfibusDP主站转modbusTCP网关与ABB电机保护器数据交互
  • LangGraph(四)——加入人机交互控制
  • history模式:让URL更美观