💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖
本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】
Sklearn 机器学习异常值检测:局部异常因子算法(LOF)
在实际的机器学习任务中,异常值检测(Outlier Detection)是一个不可或缺的步骤。无论是用于信用卡欺诈识别、网络入侵检测,还是工业设备监控,发现“不合群”的数据点 都是理解系统异常的第一步。
今天,我们将深入介绍 Sklearn 中的 局部异常因子(Local Outlier Factor,简称 LOF) 算法,并通过丰富的示例与可视化,演示它在二维空间中识别局部异常的强大能力。
📌 一、什么是局部异常因子(LOF)?
核心思想解析
局部异常因子(LOF)是一种 基于密度 的异常值检测算法,它不单纯依赖样本的距离或单维度统计,而是通过分析某个点与其邻居之间的“局部密度差异”来判断是否异常。
通俗来讲,LOF 计算一个点的密度与邻居点密度的比值。如果该点密度显著低于邻居(比值远大于 1),则该点被视为“局部异常”。
与传统方法的对比
Z-score | ❌ 否 | ❌ 否 | ✅ 支持 | ❌ 效果差(逐维独立分析) |
IQR | ❌ 否 | ❌ 否 | ✅ 支持 | ❌ 效果差(依赖中位数) |
LOF | ✅ 是 | ✅ 是 | ✅ 支持 | ✅ 结合降维更稳定 |
🔍 二、Sklearn 中的 LOF 实现
Sklearn 提供了 sklearn.neighbors.LocalOutlierFactor 类来实现 LOF 检测。支持无监督异常识别、也支持“半监督”形式(仅使用正常样本进行模型训练,用于预测未来新样本是否异常)。
导入必要库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import LocalOutlierFactor
🧪 三、构造示例数据并可视化
构造二维样本
# 构造正常数据(聚集在 2,2 附近)
X_inliers = 0.3 * np.random.randn(100, 2) + [2, 2]
# 构造离群数据(离群)
X_outliers = np.random
评论前必须登录!
注册