混淆矩阵的输出,异常检测可视化(针对二分类)

news2024/11/17 7:25:58

对于二分类任务:

  • 真阳性(True Positives, TP)为真实值为1,预测值为1,即正确预测出的正样本个数
  • 真阴性(True Negatives, TN)为真实值为0,预测值为0,即正确预测出的负样本个数
  • 假阳性(False Posiives, FP)为真实值为0,预测值为1,即错误预测出的正样本个数(即数理统计的第一类错误)
  • 假阴性(False Negatives, FN)为真实值为1,预测值为0,即错误预测出的负样本个数(即数理统计的第二类错误

1.混淆矩阵的输出

#首先要安装scikit-learn, scikit-image这两个包

#导入相应的库函数
from sklearn.metrics import roc_auc_score
from sklearn.metrics import roc_curve
from sklearn.metrics import precision_recall_curve  #计算pr曲线
from sklearn.metrics import confusion_matrix  #计算混淆矩阵


#混淆矩阵的计算
a = confusion_matrix(y_true,y_pred)
#输出的a为混淆矩阵,数组格式
范例:
    >>> y_true = [2, 0, 2, 2, 0, 1]
    >>> y_pred = [0, 0, 2, 2, 0, 2]
    >>> confusion_matrix(y_true, y_pred)
    array([[2, 0, 0],
           [0, 0, 1],
           [1, 0, 2]])

    >>> y_true = ["cat", "ant", "cat", "cat", "ant", "bird"]
    >>> y_pred = ["ant", "ant", "cat", "cat", "ant", "cat"]
    >>> confusion_matrix(y_true, y_pred, labels=["ant", "bird", "cat"])
    array([[2, 0, 0],
           [0, 0, 1],
           [1, 0, 2]])
#其中行是真实标签,列为预测值
对于二分类:
    >>> tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0]).ravel()


#注意y_true,y_pred中都为整数,其格式为一维列表(list),或一维数组(array)
import numpy as np
y_pred = np.asarray(y_pred)     #可以使用此代码将其变为数组

#以异常检测为例
#如果y_pred输出的是分数,比如异常分数,必须将其转换为整数
#先找出最优阈值,大于阈值的为异常,设为1,小于阈值的为正常,设为0

#寻找最优阈值
precision, recall, thresholds = precision_recall_curve(y_true, scores)
a = 2 * precision * recall
b = precision + recall
f1 = np.divide(a, b, out=np.zeros_like(a), where=b != 0)
threshold = thresholds[np.argmax(f1)]
#其中scores是网络输出的异常分数,precision_recall_curve的输出precision, recall, thresholds 为一维数组,分别为不同阈值下的准确率与召回率,然后计算F1分数,根据F1分数的最大值选最优阈值

#得到最优阈值后,根据最优阈值将scores变为y_pred(均为整数)
#方法1:
scoress = np.where(scores > threshold, 1, scores)    #先将大于阈值的设为1,小于阈值的不变
y_pred = np.where(scoress <= threshold, 0, scoress) 
#在上一步变化的基础上,将小于阈值的设为0

#方法2:
mask[mask > threshold] = 1
mask[mask <= threshold] = 0   #大于阈值的设为1,小于阈值的设为0




混淆矩阵,结果可视化参考论文代码如下

论文1:PaDiM: a Patch Distribution Modeling Framework for Anomaly Detection and Localization

https://arxiv.org/pdf/2011.08785v1.pdf 

代码:https://github.com/xiahaifeng1995/PaDiM-Anomaly-Detection-Localization-master

论文2:SimpleNet: A Simple Network for Image Anomaly Detection and Localization

https://arxiv.org/pdf/2303.15140v2.pdf 

代码: https://github.com/donaldrr/simplenet

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/438511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网关(史上最全)

什么是网关 网关&#xff0c;很多地方将网关比如成门&#xff0c;没什么问题&#xff0c;但是需要区分网关与网桥的区别。 网桥工作在数据链路层&#xff0c;在不同或相同类型的LAN之间存储并转发数据帧&#xff0c;必要时进行链路层上的协议转换。可连接两个或多个网络&…

漫画:是喜,还是悲?AI竟帮我们把Office破活干完了

图文原创&#xff1a;亲爱的数据 国产大模型烈火制造。阿里百度字节美团各科技大佬不等闲。 大模型嘛&#xff0c;重大工程&#xff0c;对我等“怀保小民”来说&#xff0c;只关心怎么用&#xff0c;不关心怎么造。 我来介绍一下自己&#xff0c;我是一个写稿男团组合的成员&am…

13、fishhook原理Dobby

一、fishhook原理 1.1 fishhook代码分析 int rebind_symbols(struct rebinding rebindings[], size_t rebindings_nel) {//prepend_rebindings的函数会将整个 rebindings 数组添加到 _rebindings_head 这个链表的头部//Fishhook采用链表的方式来存储每一次调用rebind_symbols…

Java动态代理(JDK/CGLIB)静态代理

Java Guide动态代理阅读笔记。 一、代理模式 代理模式是一种比较好的理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real obiect)的访问&#xff0c;这样就可以在不修改原目标对象的前提下&#xff0c;提供额外的功能操作&#xff0c;扩展目标对象的功能。 …

vue2+vue3——36+

vue2vue3——36 尚硅谷vue2vue2 Vue监测数据的原理_数组【18:56】数组vue 查看 没有 set() get()对象 有 get() set() 监测不到 不更新测试 : 数据改了 &#xff0c; 单页面没变 修改数组的 7方法 &#xff1a; filter 不改变原数组&#xff0c; 返回新的 数组 可以替换掉 原数…

逍遥自在学C语言 | 位运算符~的高级用法

前言 在上一篇文章中&#xff0c;我们介绍了^运算符的高级用法&#xff0c;本篇文章&#xff0c;我们将介绍~ 运算符的一些高级用法。 一、人物简介 第一位闪亮登场&#xff0c;有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学习的小白程序猿 ——…

linux 安装git(centos7)-yum

文章目录 在 Linux 系统上安装 Git步骤一&#xff1a;使用自带软件管理器安装步骤二&#xff1a;检查 Git步骤三&#xff1a;设置git环境变量 在 Linux 系统上安装 Git Git 是一种分布式版本控制系统&#xff0c;适用于处理从小型到非常大型的项目。在 Linux 系统上&#xff0…

c++11 标准模板(STL)(std::queue)(四)

定义于头文件 <queue> template< class T, class Container std::deque<T> > class queue; std::queue 类是容器适配器&#xff0c;它给予程序员队列的功能——尤其是 FIFO &#xff08;先进先出&#xff09;数据结构。 类模板表现为底层容器的包…

flac格式如何转mp3,3招帮你搞定

flac格式如何转mp3&#xff0c;3招帮你搞定的方法来啦。当你的音频是flac格式是不是很头疼&#xff0c;又不知道怎么转mp3 。然后网上搜索出很多方法又不知道从哪个下手&#xff0c;是不是很疑惑&#xff1f;那今天就来看看小编推荐的方法吧&#xff0c;一定让你眼前一亮&#…

petalinux-2021.1在zynq7020的flash上启动linux

一、 前言 在电脑上安装虚拟机或者找一个电脑安装linux&#xff0c;用于编译petalinux工程&#xff1b;安装与vivado对应的petalinux-tool&#xff1b;版本信息&#xff1a; 1&#xff09;linux&#xff1a;ubuntu16.04.06&#xff1b; 2&#xff09;vivado&#xff1a;v2021.…

row_number 和 cte 使用实例:考场监考安排

row_number 和 cte 使用实例&#xff1a;考场监考安排 考场监考安排使用 cte 模拟两个表的原始数据使用 master..spt_values 进行数据填充优先安排时长较长的考试使用 cte 安排第一个需要安排的科目统计老师已有的监考时长尝试使用 cte 递归&#xff0c;进行下一场考试安排&…

网咯通信基础 - 数据交换方式

文章目录 1 概述2 分类2.1 电路交换2.2 报文交换2.3 分组交换 1 概述 2 分类 2.1 电路交换 图示&#xff1a;发送方和接收方用一系列链路直接连通数据传输划分&#xff1a;电路建立、数据传输 和 电路拆除 3 个过程原理&#xff1a;当交换机收到一个呼叫后就会在网络中寻找一…

机器学习之SVM分类器介绍——核函数、SVM分类器的使用

系类文章目录 机器学习算法——KD树算法介绍以及案例介绍 机器学习的一些常见算法介绍【线性回归&#xff0c;岭回归&#xff0c;套索回归&#xff0c;弹性网络】 文章目录 一、SVM支持向量机介绍 1.1、SVM介绍 1.2、几种核函数简介 a、sigmoid核函数 b、非线性SVM与核函…

运行时内存数据区之堆(一)

堆&#xff08;Heap&#xff09; 堆的核心概述 一个JVM实例只存在一个堆内存&#xff0c;堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建&#xff0c;其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。《Java虚拟机规范》规定…

“行泊舱”+出海全面发力,这家ADAS厂商跑出规模化“新速度”

进入2023年&#xff0c;智能汽车市场已经由纯技术驱动迈入了市场驱动的新周期&#xff0c;接下来的市场竞争比拼的重点将是真正的规模化普及。 《高工智能汽车研究院》认为&#xff0c;中国乘用车市场已经来到了L2普及、L2冲刺发力以及L3/L4小规模落地的并行发展周期。对于智能…

AI工具应该成为开发者的帮手

前言 作为一名大前端开发者来说&#xff0c;最看重的就是web3.0的进一步发展以及推广速度。说到web3.0就不得不说元宇宙&#xff0c;就拿今年的支付宝集五福活动&#xff0c;就用到了元宇宙的功能&#xff1a;福气乐园&#xff0c;这也是为什么元宇宙越来越成为触手可及的&…

Ubuntu 自带截图工具快捷键盘

PrtSc – 获取整个屏幕的截图并保存到 Pictures 目录。 Shift PrtSc – 获取屏幕的某个区域截图并保存到 Pictures 目录。 Alt PrtSc –获取当前窗口的截图并保存到 Pictures 目录。 Ctrl PrtSc – 获取整个屏幕的截图并存放到剪贴板。 Shift Ctrl PrtSc – 获取屏幕的某个…

嚣张|微软“光明正大”要数据,Access用户怎么办?WPS笑了

微软“光明正大”要数据 继微软“数据门”事件之后&#xff0c;微软又开始出“幺蛾子”了。 最近&#xff0c;电脑是windows11会提示&#xff1a;你的数据将在所在国家或地区之外进行处理。 最让用户感到霸道的是&#xff0c;竟然没有“跳过”按钮。只能点击继续&#xff0c;…

MyBatis学习总结(五)逆向工程

MyBatis学习总结&#xff08;五&#xff09;逆向工程 一、MyBatis的逆向工程 正向工程&#xff1a;先创建Java实体类&#xff0c;由框架负责根据实体类生成数据库表。 Hibernate是支持正向工 程的。逆向工程&#xff1a;先创建数据库表&#xff0c;由框架负责根据数据库表&am…

操作系统(四)——文件管理

文章目录 第四章 文件管理[4.1.1] 初识文件管理&#xff08;一&#xff09;文件的属性&#xff08;二&#xff09;文件内部的数据应该怎样组织起来&#xff08;三&#xff09;文件之间应该怎样组织起来&#xff08;四&#xff09;操作系统应该向上提供哪些功能&#xff08;五&a…