离群点检测:用 Python 识别异常值33


离群点是数据集中的数据点,它们的特征与其他数据点显著不同。这些异常值可能是由于测量错误、数据输入错误或其他原因造成的。识别异常值对于探索数据、发现潜在问题以及建立准确的机器学习模型非常重要。

Python 提供了多种用于离群点检测的库和方法。本文将探讨一些常用的 Python 技术,以帮助您识别和处理离群点。

1. Z 分数

Z 分数是一种衡量数据点与均值偏差的方法。它通过将数据点与均值之差除以标准差来计算。|Z| 分数大于 3 的数据点通常被认为是异常值。

使用 NumPy 库计算 Z 分数:```python
import numpy as np
# 数据点
data = [1, 2, 3, 4, 10]
# 计算均值和标准差
mean = (data)
std = (data)
# 计算 Z 分数
z_scores = (data - mean) / std
# 标识异常值
outliers = [data[i] for i in range(len(data)) if abs(z_scores[i]) > 3]
print(outliers)
```

2. 四分位范围

四分位范围 (IQR) 是数据集中第 75 个百分位数和第 25 个百分位数之差。IQR 的 1.5 倍之外的数据点被认为是异常值。

使用 Pandas 库计算 IQR:```python
import pandas as pd
# 数据点
data = [1, 2, 3, 4, 10]
# 转换为 DataFrame
df = (data)
# 计算 IQR
iqr = df[0].quantile(0.75) - df[0].quantile(0.25)
# 计算下限和上限
lower_bound = df[0].quantile(0.25) - (1.5 * iqr)
upper_bound = df[0].quantile(0.75) + (1.5 * iqr)
# 标识异常值
outliers = [data[i] for i in range(len(data)) if data[i] < lower_bound or data[i] > upper_bound]
print(outliers)
```

3. DBSCAN

DBSCAN(基于密度的空间聚类应用噪声)是一种聚类算法,它可以识别数据集中与众不同的数据点。DBSCAN 根据数据点的密度对数据进行聚类,并标识密度较低的区域作为异常值。

使用 scikit-learn 库应用 DBSCAN:```python
from import DBSCAN
# 数据点
data = [[1, 2], [3, 4], [10, 10]]
# 初始化 DBSCAN 模型
dbscan = DBSCAN(eps=0.5, min_samples=2)
# 拟合模型
(data)
# 标识异常值
outliers = [data[i] for i in range(len(data)) if dbscan.labels_[i] == -1]
print(outliers)
```

4. Isolation Forest

Isolation Forest 是一种基于决策树的算法,它通过随机隔离数据点来检测异常值。它根据孤立程度对数据进行排名,孤立程度较高的数据点被认为是异常值。

使用 scikit-learn 库应用 Isolation Forest:```python
from import IsolationForest
# 数据点
data = [[1, 2], [3, 4], [10, 10]]
# 初始化 Isolation Forest 模型
iso_forest = IsolationForest(n_estimators=100)
# 拟合模型
(data)
# 标识异常值
outliers = [data[i] for i in range(len(data)) if ([data[i]]) == -1]
print(outliers)
```

5. One-Class SVM

One-Class SVM(支持向量机)是一种用于离群点检测的监督学习算法。它通过仅使用正常数据对边界进行建模来识别异常值。落在边界之外的数据点被认为是异常值。

使用 scikit-learn 库应用 One-Class SVM:```python
from import OneClassSVM
# 数据点
data = [[1, 2], [3, 4], [10, 10]]
# 初始化 One-Class SVM 模型
svm = OneClassSVM(nu=0.1, kernel="rbf", gamma=0.1)
# 拟合模型
(data)
# 标识异常值
outliers = [data[i] for i in range(len(data)) if ([data[i]]) == -1]
print(outliers)
```

Python 提供了广泛的库和方法来进行离群点检测。通过选择合适的技术,您可以准确识别数据集中的异常值。离群点检测在数据分析、机器学习和欺诈检测等各种领域至关重要,它有助于提高数据质量并防止意外事件。

2024-10-28


上一篇:Python 源代码封装的进阶指南

下一篇:在 Python 中优雅地导入文件