如何计算多分类情况下的敏感性指标

news/2024/12/16 12:16:57/文章来源:https://www.cnblogs.com/-ark/p/18609775

1. 混淆矩阵cm,其中矩阵元素 cm[i][j] 表示真实标签为第 i 类且被预测为第 j 类的样本个数。

 2. TP, TN, FP, FN(以类II为例)

 

 

TP: 实际为正,预测为正(最中间这一格)

FN:实际为真,预测为假(中间这一排里面,挖去中间一格,剩下的格子)

FP:实际为假,预测为真(中间这一列里,挖去中间一格,剩下的格子)

TN:实际为假,预测为假(整个矩阵挖去中间一列、中间一行)

3. 敏感性指标:

Overall Accuracy, Per-Class Accuracy, Recall, Precision, F1 Score 和 Specificity。

代码实现:

 

from sklearn.metrics import confusion_matrix
import numpy as npdef calculate_metrics(true_labels, pred_labels):"""手动计算分类指标,包括 Overall Accuracy, Per-Class Accuracy, Recall, Precision, F1 Score 和 Specificity。:param true_labels: List[int], 真实标签:param pred_labels: List[int], 预测标签:return: dict, 包含各指标的值"""# 初始化结果字典metrics = {"Overall Accuracy": None,"Per-Class Accuracy": {},"Recall": {},"Precision": {},"F1 Score": {},"Specificity": {}}# 总体 Accuracymetrics["Overall Accuracy"] = np.mean(np.array(true_labels) == np.array(pred_labels))# 计算混淆矩阵unique_labels = sorted(set(true_labels))  # 获取类别列表cm = confusion_matrix(true_labels, pred_labels, labels=unique_labels)# 矩阵元素 cm[i][j] 表示真实标签为第 i 类且被预测为第 j 类的样本个数。for i, label in enumerate(unique_labels):# TP, FP, FN, TN 的计算TP = cm[i, i]FP = sum(cm[:, i]) - TPFN = sum(cm[i, :]) - TPTN = cm.sum() - (TP + FP + FN)# 各指标的计算per_class_accuracy = (TP + TN) / cm.sum() if cm.sum() > 0 else 0.0  # 按类别的准确率recall = TP / (TP + FN) if (TP + FN) > 0 else 0.0  # Recall = TP / (TP + FN)precision = TP / (TP + FP) if (TP + FP) > 0 else 0.0  # Precision = TP / (TP + FP)specificity = TN / (TN + FP) if (TN + FP) > 0 else 0.0  # Specificity = TN / (TN + FP)f1_score = 2 * (precision * recall) / (precision + recall) if (precision + recall) > 0 else 0.0  # F1 = 2 * (P * R) / (P + R)# 存入字典metrics["Per-Class Accuracy"][label] = per_class_accuracymetrics["Recall"][label] = recallmetrics["Precision"][label] = precisionmetrics["F1 Score"][label] = f1_scoremetrics["Specificity"][label] = specificityreturn metrics# 测试函数
if __name__ == "__main__":true_labels = [0, 1, 2, 0, 1, 2, 1, 0, 2, 1]pred_labels = [0, 1, 2, 0, 0, 2, 1, 0, 2, 1]result = calculate_metrics(true_labels, pred_labels)print("Metrics:")for metric, values in result.items():if isinstance(values, dict):print(f"{metric}:")for label, value in values.items():print(f"  Class {label}: {value:.4f}")else:print(f"{metric}: {values:.4f}")

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

巴黎之旅的美好回忆

ssssss在巴黎的日子里,我们经历了许多难忘的事情...

Odoo外贸定制类(衣服)解决方案

业务背景 客户业务属于定制化外贸服装,通常由他的客户提出定制化产品需求,然后下单给工厂进行生产,工厂生产完成后发货交付。期间由跟单进行发货时间的安排,尾款的跟进和售后服务等等。本例由Odoo16.0协助完成。 SKU设计 由于客户的业务特点更偏向于按需生产,实际业务中客…

语雀使用

方式1安装vscode插件新建.lake后缀的文件语雀导出的文件后缀为.lakebook,不能直接使用该插件进行编辑,需右键解压解压后为lake文件就可以进行编辑了,更多操作方式二将lakebook文件转为markdown方便查看,但lakebook文件中包含思维导图,转为markdown文件时不能显示拉取项目到…

zabbix 5 添加 ICMP PING 监控

目录克隆原生模板修改监控项添加图形添加主机检查结果 克隆原生模板改名字,添加成新模板修改监控项修改每个监控项的键值,追加: [{HOSTNAME}]添加图形添加主机添加测试主机(一个通,一个不通)链接模板检查结果看图形================# 水平有限 欢迎指正 #===============…

中电金信成为开源风险评估与治理技术实验室软件物料清单(SBOM)工作组成员单位

近期,中电金信成功加入国家工业信息安全发展研究中心开源风险评估与治理技术实验室软件物料清单(SBOM)工作组,成为其成员单位,并同步加入“筑链计划”之中。SBOM是Software Bill of Materials的缩写,中文名为软件物料清单,SBOM不仅提供了软件项目所用组件和依赖项的详细…

掌控复杂跨境项目?在线文档是你的最佳伙伴

打破国界的协作:在线文档如何重塑跨境团队效率 在如今复杂的商业环境中,跨境团队协作已成为许多企业的常态。然而,如何在文化、时差和语言差异中实现无缝对接,成为一大难题。在线文档协作正在以其独特的优势,为企业开启新的高效协作模式。 全球化带来的协作挑战 跨境团队面…

Send_Email:一款轻量化可定制模板的邮件批量发送工具

免责声明 本工具仅供学习、测试及研究使用,严禁用于任何形式的非法或未经授权的用途。如因违规使用导致任何后果,责任自负,请遵守相关法律法规。以下文章来源于薛定谔的安全 ,作者iak3ec Send_Email:一款轻量化可定制模板的邮件批量发送工具 | 可用于攻防钓鱼或其他邮件个…

前端工程化_构建工具和脚手架_学习笔记

本文主要对构建工具和脚手架进行简要介绍,首先明确了构建工具的作用,因为开发和维护的代码和运行时的代码是不一致,需要构建工具来进行转换,而且这个转换是工程级别的转换;然后介绍了主流构建工具 webpack,介绍了 webpack 的入口、开发服务器、文件指纹、css modules以及源…

算法之链表

链表 移除链表元素 对于链表来说,删除头节点和中间节点具体操作不一样是因为想要删除一个中间节点,必须要知道该节点的前一个节点,而头节点没有前一个节点。使用虚拟头节点,统一节点的删除操作,用一个虚拟头节点的next指向head,这个链表中的每个元素都会有前一个节点,从…

算法之数组

数组 二分查找 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 题解:如果等于nums[middle],返回middle;否则返回left或者low。移除元素 在排序数组中查找target的开始位置和结束位置。 二分法不…

年会筹备大揭秘:看板软件如何助力团队协作?

看板软件以其直观、灵活和高效的特点,成为企业年会准备的得力助手。通过看板软件,企业可以更加高效地组织和管理年会筹备工作,确保活动的顺利进行,并为企业文化的传播和员工凝聚力的提升做出贡献。看板软件以其直观、灵活和高效的特点,成为企业年会准备的得力助手。通过看…

【每日一题】20241216

我做出了选择。也许不是好的选择,但选择了就要承担后果。【每日一题】已知函数 \(f(x)=\sin|x|+2|\sin x|\),则 \(f(x)\) 在 \((-2\pi,\pi)\) 的零点个数为________. 已知函数 \(f(x)(x\in\mathbf{R})\) 满足 \(f(-x)=2-f(x)\).设方程 \(f(x)-\frac{x+1}{x}=0\) 的 \(m\) 个…