基于LOF算法的异常值检测
目录
- LOF算法简介
- Sklearn官网LOF算法应用实例1
- Sklearn官网LOF算法应用实例2
- 基于LOF算法鸢尾花数据集异常值检测
- 读取数据
- 构造数据
- 可视化,画出可疑异常点
- LOF算法
LOF算法简介
LOF异常检测算法是一种基于密度的异常检测算法,基于密度的异常检测算法主要思想是:给定的样本数据集,对于数据集中的点,如果其局部领域的点都很密集,那么这个点大概率为正常的数据点;而如果这个点距离其相邻的点距离较远,也就是在一个局部领域的点密度较小,那么这个点可能为异常点。
Sklearn官网LOF算法应用实例1

clf.negative_outlier_factor_输出:array([ -0.98214286, -1.03703704, -73.36970899, -0.98214286])
绝对值越大于1则越有可能是异常。很明显101.1最有可能是异常。
Sklearn官网LOF算法应用实例2
导入包:

构造二维数据,以及一些离群点,并可视化:

LOF算法:

根据X_scores可视化,红色圈越大,该点越可能是异常点:

基于LOF算法鸢尾花数据集异常值检测
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from sklearn.neighbors import LocalOutlierFactor
from sklearn.datasets import load_iris
matplotlib.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
%matplotlib inline
读取数据
iris_data = load_iris()
iris_data.data[0:5,:]
array([[5.1, 3.5, 1.4, 0.2],[4.9, 3. , 1.4, 0.2],[4.7, 3.2, 1.3, 0.2],[4.6, 3.1, 1.5, 0.2],[5. , 3.6, 1.4, 0.2]])
# 数据规模
iris_data.data.shape
(150, 4)
# 特征
iris_data.feature_names
['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)']
# 查看类别
pd.DataFrame(iris_data.target).value_counts(), iris_data.target_names
(0 501 502 50dtype: int64,array(['setosa', 'versicolor', 'virginica'], dtype='<U10'))
构造数据
这里为方便可视化,只选取iris数据集中 ‘sepal width (cm)’ 和 ‘petal width (cm)’ 两个特征
data = iris_data.data[:, [1, 3]]
data = pd.DataFrame(data, columns=iris_data.feature_names[1:4:2])#['sepal width (cm)','petal width (cm)']
data.head()
| sepal width (cm) | petal width (cm) | |
|---|---|---|
| 0 | 3.5 | 0.2 |
| 1 | 3.0 | 0.2 |
| 2 | 3.2 | 0.2 |
| 3 | 3.1 | 0.2 |
| 4 | 3.6 | 0.2 |
可视化,画出可疑异常点
# 可视化两个特征'sepal width (cm)','petal width (cm)'
data.plot(kind="scatter", x="sepal width (cm)", y="petal width (cm)", c='r', figsize=(6,2))## 圈出可疑的异常点
plt.plot(2.3, 0.3, "ko", markersize=20, markerfacecolor="none")
plt.annotate("可能异常点", xy=(2.3, 0.48), xytext=(2, 0.75), arrowprops=dict(facecolor="blue"))plt.plot(3.8, 2.1, "ko", markersize=30, markerfacecolor="none")
plt.annotate("可能异常点", xy=(3.9, 1.9), xytext=(4, 1.5), arrowprops=dict(facecolor="blue"))plt.plot(4.4, 0.4, "ko", markersize=20, markerfacecolor="none")
plt.annotate("可能异常点", xy=(4.3, 0.5), xytext=(4.5, 1), arrowprops=dict(facecolor="blue"))
Text(4.5, 1, '可能异常点')

LOF算法
lof = LocalOutlierFactor(n_neighbors=30, metric="minkowski")
outlier_pre = lof.fit_predict(data.values)
"异常值数量:%d"%np.sum(outlier_pre==-1)
'异常值数量:7'
# 异常点
data[outlier_pre==-1]
| sepal width (cm) | petal width (cm) | |
|---|---|---|
| 15 | 4.4 | 0.4 |
| 33 | 4.2 | 0.2 |
| 41 | 2.3 | 0.3 |
| 60 | 2.0 | 1.0 |
| 109 | 3.6 | 2.5 |
| 117 | 3.8 | 2.2 |
| 131 | 3.8 | 2.0 |
scores = lof.negative_outlier_factor_# negative_outlier_factor_数值越大越正常;数值越小越不正常,可能是离群点scores = (scores.max()-scores)/(scores.max()-scores.min())
data.plot(kind="scatter", x="sepal width (cm)", y="petal width (cm)", c='r', figsize=(6,2))
plt.scatter(data["sepal width (cm)"], data["petal width (cm)" ], s=800*scores, edgecolors='k', facecolor="none",label="score")

相关文章:
基于LOF算法的异常值检测
目录 LOF算法简介Sklearn官网LOF算法应用实例1Sklearn官网LOF算法应用实例2基于LOF算法鸢尾花数据集异常值检测读取数据构造数据可视化,画出可疑异常点LOF算法 LOF算法简介 LOF异常检测算法是一种基于密度的异常检测算法,基于密度的异常检测算法主要思想…...
软考-系统可靠性原理
系统可靠性原理...
【Unity】【Amplify Shader Editor】ASE入门系列教程第二课 硬边溶解
黑色为0,白色为1 新建材质(不受光照影响) 拖入图片 设置 添加节点: 快捷键:K 组合通道:快捷键 V 完成图...
对神经网络理解的个人记录
对神经网络理解的个人记录 一、 神经网络为什么可以拟合函数、非线性函数二、 用向量表示特征(语音、文本、视频)。然后如何计算向量之间的相似度2.1 欧氏距离的计算2.2 点积运算2.3 余弦相似度计算一、 神经网络为什么可以拟合函数、非线性函数 第一个小短片:讲解神经网络为什…...
华为数通方向HCIP-DataCom H12-821题库(单选题:61-80)
第61题 关于 BGP 的Keepalive报文消息的描述,错误的是 A、Keepalive周期性的在两个BGP邻居之间发送 B、Keepalive报文主要用于对等路由器间的运行状态和链路的可用性确认 C、Keepalive 报文只包含一个BGP数据报头 D、缺省情况下,Keepalive 的时间间隔是180s 答案ÿ…...
Unity带有时效性的数据存储
Unity带有时效性的数据存储 引言 在Unity项目开发中,有时候会遇到带有时效性的数据存储,比如账号信息、token等,都是具有时效性的,这时候我们就需要在这些信息过期的时候将对应的信息作废。 实现 这个功能怎么实现呢ÿ…...
vue 子组件 emit传递事件和事件数据给父组件
1 子组件通过emit 函数 传递事件名init-complete 和 数据dateRange this.$emit(init-complete, dateRange) 2 父组件 创建方法 接收数据 handleInitComplete(dateRange) {} 3 父组件 创建的方法 和 子组件事件绑定 <component :is"currentComponent" :passOb…...
Zenity 简介
什么使 Zenity Zenity 是一个开源的命令行工具,它提供了一种简单的方式来创建图形化的用户界面(GUI)对话框,以与用户进行交互。它基于 GTK 库,可以在 Linux 和其他 UNIX-like 系统上使用。 Zenity 可以通过命令行或脚…...
c# 数组反转
一个数组是{1,2,3,4,5,6},把它变成{6,5,4,3,2,1} 1.创建一个和原数组长度类型一样的数组来接收反转的数据 private static void Main(string[] a…...
CSS学习笔记01
CSS笔记01 什么是CSS CSS(Cascading Style Sheets ):层叠样式表,也可以叫做级联样式表,是一种用来表现 HTML 或 XML 等文件样式的计算机语言。字体,颜色,边距,高度,宽度…...
数据结构,队列,顺序表队列,链表队列
队列是一种常见的数据结构,它具有先进先出(First-In-First-Out,FIFO)的特性,类似于排队等候的场景。以下是队列的要点: 1. 定义:队列是一种线性数据结构,由一系列元素组成ÿ…...
Webgl利用缓冲区绘制三角形
什么是attribute 变量 它是一种存储限定符,表示定义一个attribute的全局变量,这种变量的数据将由外部向顶点着色器内传输,并保存顶点相关的数据,只有顶点着色器才能使用它 <!DOCTYPE html> <html lang"en"&g…...
正则表达式应用
正则表达式应用 正则匹配以{开头,以}结尾 \{.*?\}正则匹配以[开头,以]结尾 \[.*?\]校验数字的表达式 数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字…...
9.4 【C语言】用指针处理链表
9.4.1 什么是链表 它是动态地进行存储分配的一种结构。 链表中各元素在内存中的地址是不连续的。要找某一元素,必须先找到上一个元素,根据它提供的下一元素地址才能找到下一个元素。 如果不提供“头指针”,则整个链表无法访问。 9.4.2 建…...
后端面试话术集锦第四篇:rabbitmq面试话术
🚗后端面试集锦目录 💖后端面试话术集锦第一篇:spring面试话术💖 💖后端面试话术集锦第二篇:spring boot面试话术💖 💖后端面试话术集锦第三篇:spring cloud面试话术💖 💖后端面试话术集锦第四篇:ElasticSearch面试话术💖 💖后端面试话术集锦第五篇:r…...
Linux目录结构与文件管理(01) (三)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、Linux 系统的组成 二、目录结构 根目录 三、文件管理 目录管理 总结 前言 今天主要学习了Linux的目录结构,主要是一些命令的含义和用法&am…...
OpenCV为老照片,黑白照片增加色彩
Colorful Image Colorization 图片的颜色上色,主要使用到了CNN卷积神经网络,作者在ImageNet数据集上进行了大量的训练,并将此问题使用在分类任务中,以解决问题的潜在的不确定性,并在训练时使用颜色重新平衡的损失函数方…...
HTML之VSCode简单配置与创建
目录 插件下载 然后输入源码: 使用 效果 插件下载 下载这个插件后可以直接运行: 然后创建一个文件: 然后输入源码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…...
2023亿发一体化新零售POS收银解决方案,打造连锁门店经营新未来
在零售业不断演变的今天,门店形态繁多,收银环节的共通性与差异性并存。传统的通用解决方案已不适应多样化的业态需求,而在线上线下一体化的时代背景下,全渠道经营能力也成为商家的迫切需求。 一体化新零售POS收银系统,…...
Android ---使用Jenkins 打包release版本不能安装或者安装后不显示APP
大家在用 Jenkins的时候,是不是会觉得很爽,因为他在用的过程中,是无脑的,毕竟一键触发!!!! 这边记录一个昨天,今天遇到的一个坑货问题,别人提交了所有代码&am…...
SaaS级AI员工系统源码商用版,多租户+计费系统+API分销,一套源码搞定
温馨提示:文末有资源获取方式最近“龙虾AI”的热度居高不下,到处都在讨论如何“养龙虾”。但观察下来发现,这类应用对普通用户而言技术门槛还是偏高,部署、配置、调试都需要专人跟进,最终往往沦为摆设。源码获取方式在…...
【开发工具】Trae IDE 解决 Windows 下 C 工程无法跳转定义问题
1. 概要 👋 作为 Trae IDE 使用者,在 Windows 环境打开本地 C 工程时,习惯用 Ctrl 鼠标左键 快速跳转函数 / 变量定义却失效,仅能做文本匹配,无法精准定位语义定义。核心原因是 Trae 依赖 LSP(语言服务器协…...
Homebrew卸载与重装指南:彻底清理残留文件的正确姿势
Homebrew深度清理与重装实战:从残留文件追踪到ARM架构优化 每次系统升级或开发环境切换时,那些隐藏在系统深处的Homebrew残留文件就像房间里扫不尽的灰尘——明明已经卸载了所有公式,却在重新安装时遇到各种诡异的权限错误或版本冲突。作为m…...
生物认证锁:用虹膜加密核心模块——软件测试从业者的专业指南
在数字化转型浪潮中,生物认证技术正重塑安全防护体系,其中虹膜识别凭借其超高精度和防伪特性,成为加密核心模块(如支付系统、数据库访问控制或敏感API)的首选方案。作为软件测试从业者,您肩负着验证系统鲁棒…...
Taskbar-Lyrics:Windows 11任务栏歌词嵌入终极指南
Taskbar-Lyrics:Windows 11任务栏歌词嵌入终极指南 【免费下载链接】Taskbar-Lyrics BetterNCM插件,在任务栏上嵌入歌词,目前仅建议Windows 11 项目地址: https://gitcode.com/gh_mirrors/ta/Taskbar-Lyrics 在Windows 11上享受沉浸式…...
从零到上线:用Vue3+AntV G2快速搭建企业级数据大屏
从零到上线:用Vue3AntV G2快速搭建企业级数据大屏 在数字化转型浪潮中,数据可视化已成为企业决策的重要支撑。想象这样一个场景:会议室里,高管们围坐在大屏前,实时业务数据通过动态图表清晰呈现,关键指标一…...
基于spring和vue的企业原材料库存盘点食品厂管理系统
目录技术选型与架构设计核心功能模块划分数据库设计要点关键技术实现前端交互优化系统安全措施测试与部署方案扩展性设计项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术选型与架构设计 后端采用Spring Boot框架࿰…...
别再纠结模型了!用Python+Simulink快速搭建四旋翼无人机仿真(附完整代码)
用PythonSimulink快速搭建四旋翼无人机仿真实战指南 四旋翼无人机开发中最令人头疼的环节,往往不是控制算法设计,而是如何快速搭建一个可靠的仿真环境。我曾见过不少团队在模型选择上耗费数周时间,最终却陷入理论完美主义陷阱——他们反复纠结…...
离散数学实战:用Python解决图论问题(附完整代码示例)
离散数学实战:用Python解决图论问题(附完整代码示例) 当你在社交软件上查看"可能认识的人"推荐,或是用导航软件规划最短路线时,背后都在运行图论算法。作为离散数学中最具工程价值的领域,图论将现…...
LFM2.5-1.2B-Thinking-GGUF基础教程:单页Web界面交互逻辑与后处理机制
LFM2.5-1.2B-Thinking-GGUF基础教程:单页Web界面交互逻辑与后处理机制 1. 模型与平台介绍 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。这个镜像采用内置GGUF模型文件和llama.cpp运行时,提供了…...
