2021SC@SDUSC-山东大学软件工程与实践-Senta(八)

2023-11-23 11:59

本文主要是介绍2021SC@SDUSC-山东大学软件工程与实践-Senta(八),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本期续接2021SC@SDUSC-山东大学软件工程与实践-Senta(七),继续对Metrics
中的glue_eval进行分析。

def matthews_corrcoef(preds, labels):"""matthews_corrcoef"""preds = np.array(preds)labels = np.array(labels)tp = np.sum((labels == 1) & (preds == 1))tn = np.sum((labels == 0) & (preds == 0))fp = np.sum((labels == 0) & (preds == 1))fn = np.sum((labels == 1) & (preds == 0))mcc = ( (tp * tn) - (fp * fn)) / np.sqrt((tp + fp) * (tp + fn) * (tn + fp) * (tn + fn) )return mcc

构建matthews_corrcoef函数进行二分类评估:运用numpy中的array函数创建preds 和 labels两个数组,并计算mcc指标。

MCC是应用在机器学习中,用以测量二分类的分类性能的指标,该指标考虑了真阳性,真阴性,假阳性和假阴性,通常认为该指标是一个比较均衡的指标,即使是在两类别的样本含量差别很大时,也可以应用它。
MCC本质上是一个描述实际分类与预测分类之间的相关系数,它的取值范围为[-1,1],取值为1时表示对受试对象的完美预测,取值为0时表示预测的结果还不如随机预测的结果,-1是指预测分类和实际分类完全不一致。

def f1_score(preds, labels):"""f1_score"""preds = np.array(preds)labels = np.array(labels)tp = np.sum((labels == 1) & (preds == 1))tn = np.sum((labels == 0) & (preds == 0))fp = np.sum((labels == 0) & (preds == 1))fn = np.sum((labels == 1) & (preds == 0))p = tp / (tp + fp)r = tp / (tp + fn)f1 = (2 * p * r) / (p + r + 1e-8)return f1

构建f1_score()函数计算f1指标。 f1: 精确率和召回率的调和平均。

def pearson_and_spearman(preds, labels):"""pearson_and_spearman"""preds = np.array(preds)labels = np.array(labels)pearson_corr = pearsonr(preds, labels)[0]spearman_corr = spearmanr(preds, labels)[0]return {"pearson": pearson_corr,"spearmanr": spearman_corr,"corr": (pearson_corr + spearman_corr) / 2,}

构建pearson_and_spearman函数计算pearson和spearman统计系数

pearson系数用于评估两个连续变量之间的线性关系。
在这里插入图片描述
-1 ≤ p ≤ 1
p接近0代表无相关性
p接近1或-1代表强相关性

spearman系数评估两个连续变量之间的单调关系。在单调关系中,变量趋于一起变化,但不一定以恒定速率变化。
在这里插入图片描述

def acc_and_f1(preds, labels):"""acc_and_f1"""preds = np.array(preds)labels = np.array(labels)acc = simple_accuracy(preds, labels)f1 = f1_score(preds, labels)return {"acc": acc,"f1": f1,"acc_and_f1": (acc + f1) / 2,}

构建acc_and_f1函数求acc与f1的平均值。
ACC = (TP + TN) / (P + N) 即:(真阳性+真阴性) / 总样本数

这篇关于2021SC@SDUSC-山东大学软件工程与实践-Senta(八)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417787

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java 结构化并发Structured Concurrency实践举例

《Java结构化并发StructuredConcurrency实践举例》Java21结构化并发通过作用域和任务句柄统一管理并发生命周期,解决线程泄漏与任务追踪问题,提升代码安全性和可观测性,其核心... 目录一、结构化并发的核心概念与设计目标二、结构化并发的核心组件(一)作用域(Scopes)(二)任务句柄

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

SpringBoot集成WebService(wsdl)实践

《SpringBoot集成WebService(wsdl)实践》文章介绍了SpringBoot项目中通过缓存IWebService接口实现类的泛型入参类型,减少反射调用提升性能的实现方案,包含依赖配置... 目录pom.XML创建入口ApplicationContextUtils.JavaJacksonUt

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1