Python混淆矩阵用例
📜用例
- 📜Python社群纽带关系谱和图神经 | 📜多标签混淆矩阵模型 | 📜二元分类分层混淆矩阵模型 | 📜混淆矩阵评估特征归因
✒️梗概
混淆矩阵是评估分类模型性能的有用工具。 该矩阵通过将预测值与实际值进行比较,可以深入了解模型对数据进行分类的程度。 理解和解释混淆矩阵可能具有挑战性,特别是对于机器学习的初学者来说。 然而,理解每个单元代表的内容至关重要,因为它可以帮助您评估模型的优点和缺点。
我们将使用 Python 中的 Scikit-learn 库深入讨论混淆矩阵。 我们将带您了解混淆矩阵到底是什么、为什么它很重要以及如何有效地解释其结果。 此外,我们将引导您构建一个简单的机器学习模型,作为示例,该模型根据花卉的测量值对花卉种类进行分类。
混淆矩阵是用于评估机器学习算法性能的表格。它显示了算法在每个类别中正确或错误分类的样本数量。混淆矩阵有两个维度:实际维度和预测维度。在二元分类中,只有两个类(正类和负类),它看起来像这样:
Predicted Positive Predicted Negative Actual Positive True Positive (TP) False Negative (FN) Actual Negative False Positive (FP) True Negative (TN) \begin{array}{|l|c|l|} \hline & \text { Predicted Positive } & \text { Predicted Negative } \\ \hline \text { Actual Positive } & \text { True Positive (TP) } & \text { False Negative (FN) } \\ \hline \text { Actual Negative } & \text { False Positive (FP) } & \text { True Negative (TN) } \\ \hline \end{array} Actual Positive Actual Negative Predicted Positive True Positive (TP) False Positive (FP) Predicted Negative False Negative (FN) True Negative (TN)
让我们考虑一个二元分类问题,其中有两个类:“正”和“负”。
- 真正例(TP):这是指模型在实际情况下正确预测实例属于正类。换句话说,TP是指被模型正确预测为正例的正例实例的数量。
- 真负例(TN):这是指模型在实际情况下正确预测实例属于负类。换句话说,TN是指被模型正确预测为负例的负例数量。
- 假负例(FP):这是指模型错误地预测某个实例属于正类,而实际上它属于负类。 换句话说,FP指的是被模型错误预测为正例的负例的数量。
- 假负例(FN):这是指模型错误地预测某个实例属于负类,而实际上它属于正类。 换句话说,FN 指的是被模型错误预测为负例的正例数量。
混淆矩阵是机器学习中评估分类模型性能的常用工具。以下是一些现实世界或业务用例,混淆矩阵可能会有所帮助:
- 欺诈检测:银行使用机器学习模型来识别欺诈交易。 混淆矩阵通过显示真阳性、真阴性、假阳性和假阴性的数量,帮助银行了解模型的执行情况
- 医疗诊断:医院使用机器学习模型来诊断患有某种疾病的患者。 混淆矩阵通过显示真阳性、真阴性、假阳性和假阴性的数量,帮助医生了解模型的准确性。
- 客户流失预测:公司使用机器学习模型来预测哪些客户可能会流失(停止使用他们的服务)。 混淆矩阵通过显示真阳性、真阴性、假阳性和假阴性的数量,帮助公司了解模型的表现如何。
- 情绪分析:社交媒体平台使用机器学习模型来分析用户评论并确定它们是正面还是负面。 混淆矩阵通过显示真阳性、真阴性、假阳性和假阴性的数量,帮助平台了解模型的准确性。
- 图像分类:电子商务网站使用机器学习模型自动将产品图像分类为不同类别,例如服装或电子产品。 混淆矩阵通过显示每个类别的真阳性、真阴性、假阳性和假阴性的数量,帮助他们了解图像分类算法的执行情况。
让我们看一个对 Scikit-Learn 的乳腺癌数据集进行二元分类的示例。
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrixdata = load_breast_cancer()X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, random_state=0)model = LogisticRegression()
model.fit(X_train, y_train)y_pred = model.predict(X_test)cm = confusion_matrix(y_test, y_pred)print("Confusion Matrix:")
print(cm)
使用Scikit-Learn中的confusion_matrix只会显示混淆矩阵的Numpy数组,但如果想绘制它,我们可以使用Scikit-Learn中的plot_confusion_matrix函数,如下所示:
from sklearn.metrics import plot_confusion_matrix
plot_confusion_matrix(model, X_test, y_test)
这将使用 Matplotlib 输出混淆矩阵图:
现在让我们探讨一个使用多个类(而不仅仅是 2 个二元类)的混淆矩阵的示例。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix, plot_confusion_matrix
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as pltiris = load_iris()
X = iris.data
y = iris.targetX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)y_pred = clf.predict(X_test)cm = confusion_matrix(y_test, y_pred)
plot_confusion_matrix(clf, X_test, y_test)
行代表真实类别,列代表预测类别。 对角线元素(从左上到右下)显示每个类别的正确预测数量。 非对角线元素显示错误分类。 例如,在我们的例子中,我们可以看到 0 类的 15 个样本被正确预测,没有错误,但是我们可以看到 1 类有两个错误分类为 2 类。
参阅:亚图跨际
相关文章:
Python混淆矩阵用例
📜用例 📜Python社群纽带关系谱和图神经 | 📜多标签混淆矩阵模型 | 📜二元分类分层混淆矩阵模型 | 📜混淆矩阵评估特征归因 ✒️梗概 混淆矩阵是评估分类模型性能的有用工具。 该矩阵通过将预测值与实际值进行比较&…...

【负载均衡式在线OJ项目day6】源文件路由功能及文件版题库构建
一.前言 前文讲到了OJ模块的设计思路,毫无疑问这是一个网络服务,我们先使用httplib,将源文件的路由功能实现,先把框架写好,后续再更改回调方法。 随后计划编写Modify模块,提供增删查改题库的功能(主要是查…...
841.钥匙和房间
841.钥匙和房间 题目链接:841.钥匙和房间 代码如下: class Solution { public:bool canVisitAllRooms(vector<vector<int>>& rooms) {vector<bool> visited(rooms.size(),false);dfs(rooms,visited,0);// bfs(rooms,visited,0)…...
【OceanBase 系列】—— 什么是冻结和转储
文章出处:OceanBase分布式数据库-海量数据 笔笔算数 本文主要介绍什么是冻结和转储。 适用版本 OceanBase 数据库所有版本。 冻结 冻结是指将 Active MEMTable 转化为 Frozen MEMTable 的过程。 冻结的触发方式 手动触发:alter system minor freeze…...

智慧园区能耗管控系统,3D可视化开发都需要哪些技术栈?
数据可视化: 数据可视化是将数据通过图表、图形、地图等可视化方式展示,使得数据更加直观、易于理解和分析。在智慧园区能耗管控系统中,可以使用各种图表库(如Echarts、Highcharts)和可视化工具(如Tableau…...
Spring之推断构造方法源码解析
Spring之推断构造方法源码解析 简介 在Spring框架中,构造方法注入是一种常见的依赖注入方式。而在构造方法注入中,推断构造方法是一种特殊的方式,它可以根据参数类型自动选择合适的构造方法进行注入。本文将深入解析Spring框架中推断构造方…...

【计算机网络】计算机网络的定义和分类
🚩本文已收录至专栏:计算机网络学习之旅 一.定义 计算机网络并没有一个精确和统一的定义,在计算机网络发展的不同阶段,人们对计算机网络给出了不同的定义,这些定义反映了当时计算机网络技术的发展水平。 例如计算机…...

天机学堂—学习辅助功能(含场景问答和作业)
我的课表 需求分析 原型图 管理后台 用户端 流程图 数据设计 接口设计 支付成功报名课程后, 加入到我的课表(MQ)分页查询我的课表查询我正在学习的课程根据id查询指定课程的学习状态删除课表中的某课程 代码实现 数据表设计 添加课程到课表(非标准接口&#x…...

Stable Diffusion AI绘画
我们今天来了解一下最近很火的SD模型 ✨在人工智能领域,生成模型一直是研究的热点之一。随着深度学习技术的飞速发展,一种名为Stable Diffusion的新型生成模型引起了广泛关注。Stable Diffusion是一种基于概率的生成模型,它可以学习数据的潜…...
linux性能监控之sar
1.sar命令介绍 sar是一个非常全面的分析工具,可以对文件的读写,系统调用的使用情况,磁盘IO,CPU相关使用情况,内存使用情况,进程活动等都可以进行有效的分析。 sar工具将对系统当前的状态进行取样&am…...
react框架对Excel文件进行上传和导出
1.首先需要安装xlsx第三方的库库 引入插件 npm install xlsx在react引入 import * as XLSX from xlsx;1,首先设置jsx部分的 以下代码包含有导入excel文件和导出excel文件,读着可以根据需要,自己选择想要实现的功能 代码如下࿰…...

【前端】-【前端文件操作与文件上传】-【前端接受后端传输文件指南】
目录 前端文件操作与文件上传前端接受后端传输文件指南 前端文件操作与文件上传 一、前端文件上传有两种思路: 二进制blob传输:典型案例是formData传输,相当于用formData搭载二进制的blob传给后端base64传输:转为base64传输&…...

【IC前端虚拟项目】验证环境env与base_teat思路与编写
【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 上一篇里解决了最难搞的axi_ram_model,接下来呢就会简单又常规一些了,比如这一篇要说的env和base_test的搭建。在这里我用了gen_uvm_tb脚本: 【前端验证】验证自动化脚本的最后一块拼图补全——gen_t…...

使用Remix部署智能合约到币安链(Remix的操作介绍 币安链合约的部署) 点赞收藏哦
大家好,我是程序员大猩猩呀。 据我所知,很多人进入币圈之后,想要通过炒币一夜暴富!另一部分人呢他们希望自己能创建一个项目,然后发行自己的数字货币然后暴富。 不管是什么方式吧,只要不违法,…...
为什么Redis6.0引入了多线程
Redis 6.0引入了多线程,主要原因有以下几点: 提高网络I/O的吞吐量:多线程可以更有效地处理大量的并发连接和请求,特别是在多核心服务器上。通过使用多线程来处理读写网络套接字,Redis能够更充分地利用系统资源&#x…...
速盾:高防ip和高防cdn有什么相同点?
高防IP(Dedicated IP)和高防CDN(Content Delivery Network)都是用来保护网站免受各种网络攻击的技术手段,它们在一定程度上具有相同的作用和效果。下面将详细介绍它们的相同点。 首先,高防IP和高防CDN都能…...

设计模式之拦截过滤器模式
想象一下,在你的Java应用里,每个请求就像一场冒险旅程,途中需要经过层层安检和特殊处理。这时候,拦截过滤器模式就化身为你最可靠的特工团队,悄无声息地为每一个请求保驾护航,确保它们安全、高效地到达目的…...

【联通支付注册/登录安全分析报告】
联通支付注册/登录安全分析报告 前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨…...
c++ - 在循环中使用迭代器删除 unordered_set 中的元素
标签 c unordered-set 请考虑以下代码: Class MyClass 为自定义类:class MyClass { public:MyClass(int v) : Val(v) {}int Val; };然后下面的代码将在调用 it T.erase(it); 之后在循环中导致 Debug Assertion Failed: unordered_set<MyClass*> T; unordered_set<…...
深入了解哈希映射(HashMap)
一、哈希映射(HashMap)简介 在计算机科学中,哈希映射(HashMap)是一种基于键值对(Key-Value pair)存储数据的数据结构,它提供了高效的数据查找、插入和删除操作。哈希映射的核心思想…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...