第一章 异常值基础
1.1 什么是异常值
异常值是数据集中与其他数据点显著不同的数据点,可能是由于测量错误、数据录入错误或真实的极端情况。
- 离群值:与大部分数据偏离较大的值
- 噪声:随机误差或干扰
- 异常点:不符合正常模式的数据点
💡 异常值检测在金融风控、网络安全、工业检测等领域有广泛应用。
第二章 IQR方法
2.1 IQR原理
IQR(四分位距)方法是一种基于统计学的异常值检测方法:
- Q1:第一四分位数(25%分位数)
- Q3:第三四分位数(75%分位数)
- IQR:Q3 - Q1
- 下限:Q1 - 1.5 * IQR
- 上限:Q3 + 1.5 * IQR
2.2 IQR实现
import pandas as pd
import numpy as np
# 创建数据(包含异常值)
data = {'value': [10, 20, 25, 30, 35, 40, 45, 50, 55, 200]}
df = pd.DataFrame(data)
# 计算IQR
Q1 = df['value'].quantile(0.25)
Q3 = df['value'].quantile(0.75)
IQR = Q3 - Q1
# 计算上下限
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# 检测异常值
outliers = df[(df['value'] < lower_bound) | (df['value'] > upper_bound)]
print(f"Q1: {Q1}, Q3: {Q3}, IQR: {IQR}")
print(f"下限: {lower_bound}, 上限: {upper_bound}")
print(f"异常值: {outliers['value'].values}")
第三章 Z-score方法
3.1 Z-score原理
Z-score表示数据点距离均值的标准差倍数:
import pandas as pd
from scipy.stats import zscore
# 创建数据
data = {'value': [1, 2, 3, 4, 5, 6, 7, 8, 9, 100]}
df = pd.DataFrame(data)
# 计算Z-score
df['z_score'] = zscore(df['value'])
# 检测异常值(通常Z-score绝对值大于3视为异常)
outliers = df[abs(df['z_score']) > 3]
print("数据与Z-score:")
print(df)
print(f"\n异常值: {outliers['value'].values}")
第四章 异常值检测实战
4.1 综合检测示例
💻 在线代码编辑器
练习题(共5题)
练习 1:IQR异常值检测
使用IQR方法检测异常值。
练习 2:Z-score异常值检测
使用Z-score方法检测异常值。
练习 3:异常值处理 - 删除
删除检测到的异常值。
练习 4:异常值处理 - 替换
用均值或中位数替换异常值。
练习 5:多特征异常值检测
对多个特征进行异常值检测。
测试题(共 5 题,满分 100 分)
1. IQR方法中,异常值的判断标准是什么?
2. Z-score表示什么?
3. 通常Z-score绝对值大于多少视为异常值?
4. IQR代表什么?
5. 处理异常值的常用方法不包括?
作业提交
📝 异常值检测作业
请完成以下任务:
- 创建包含异常值的数据集
- 使用IQR方法检测异常值
- 使用Z-score方法检测异常值
- 处理检测到的异常值
💻 作业代码提交