【R语言】单个分类模型性能评估、两个分类模型性能对比、统计检验

 单个模型评估

# install.packages("pROC")
library(pROC)calculate_metrics <- function(label, prediction) {# 加载所需的包library(pROC)# 计算ROC曲线和AUCroc_obj <- roc(label, prediction)auc_value <- auc(roc_obj)# 寻找最佳cutoffcutoff <- coords(roc_obj, "best", ret = "threshold")# 根据cutoff计算混淆矩阵predicted_label <- ifelse(prediction >= cutoff$threshold, 1, 0)confusion_matrix <- table(predicted_label, label)# 提取混淆矩阵中的TP,TN,FP和FNTP <- confusion_matrix[2, 2]TN <- confusion_matrix[1, 1]FP <- confusion_matrix[2, 1]FN <- confusion_matrix[1, 2]# 计算敏感度和特异度sensitivity <- TP / (TP + FN)specificity <- TN / (TN + FP)# 返回结果result <- list(AUC = auc_value,Cutoff = cutoff$threshold,Confusion_Matrix = confusion_matrix,TP = TP,TN = TN,FP = FP,FN = FN,Sensitivity = sensitivity,Specificity = specificity)return(result)
}# 使用示例数据调用函数
set.seed(123)
label <- sample(0:1, 100, replace = TRUE)
pred <- runif(100)
metrics <- calculate_metrics(label, pred)
print(metrics)

多个模型对比分析及统计检验

# install.packages("pROC")
library(pROC)
compare_models <- function(label, pred1, pred2) {# 加载所需的包library(pROC)# 计算ROC曲线roc1 <- roc(label, pred1)roc2 <- roc(label, pred2)# Delong检验delong_test_result <- roc.test(roc1, roc2, method = "delong")# 寻找最佳阈值cutoff1 <- coords(roc1, "best", ret = "threshold")cutoff2 <- coords(roc2, "best", ret = "threshold")# 计算敏感度和特异度predicted_label1 <- ifelse(pred1 >= cutoff1$threshold, 1, 0)predicted_label2 <- ifelse(pred2 >= cutoff2$threshold, 1, 0)sensitivity1 <- sum(predicted_label1 == 1 & label == 1) / sum(label == 1)sensitivity2 <- sum(predicted_label2 == 1 & label == 1) / sum(label == 1)specificity1 <- sum(predicted_label1 == 0 & label == 0) / sum(label == 0)specificity2 <- sum(predicted_label2 == 0 & label == 0) / sum(label == 0)# 比例检验sensitivity_test <- prop.test(x = c(sum(predicted_label1 == 1 & label == 1), sum(predicted_label2 == 1 & label == 1)),n = c(sum(label == 1), sum(label == 1)),correct = FALSE)specificity_test <- prop.test(x = c(sum(predicted_label1 == 0 & label == 0), sum(predicted_label2 == 0 & label == 0)),n = c(sum(label == 0), sum(label == 0)),correct = FALSE)# 返回结果result <- list(Delong_Test_Result = delong_test_result,Sensitivity_Test_Result = sensitivity_test,Specificity_Test_Result = specificity_test,Sensitivity1 = sensitivity1,Sensitivity2 = sensitivity2,Specificity1 = specificity1,Specificity2 = specificity2,Cutoff1 = cutoff1$threshold,Cutoff2 = cutoff2$threshold)return(result)
}# 使用示例数据调用函数
set.seed(123)
label <- sample(0:1, 100, replace = TRUE)
pred1 <- runif(100)
pred2 <- runif(100)comparison_result <- compare_models(label, pred1, pred2)
print(comparison_result)

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

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

相关文章

探索AI视频生成新纪元:文生视频Sora VS RunwayML、Pika及StableVideo——谁将引领未来

探索AI视频生成新纪元&#xff1a;文生视频Sora VS RunwayML、Pika及StableVideo——谁将引领未来 sora文生视频&#xff0c;探索AI视频生成新纪元 由于在AI生成视频的时长上成功突破到一分钟&#xff0c;再加上演示视频的高度逼真和高质量&#xff0c;Sora立刻引起了轰动。在S…

【Spring Boot 3】【JPA】一对一单向关联

【Spring Boot 3】【JPA】一对一单向关联 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花…

408计算机网络--基础概论

学习计算机网络走以前需要首先明白一个大的概念&#xff0c;计算机网络通常分为通信子网&#xff08;实现数据通信&#xff09;和资源子网&#xff08;实现资源共享/数据处理&#xff09;七层妖塔 计算机网络&#xff1a;是一个将分散的、具有独立功能的计算机系统&#xff0…

Rabbitmq入门与应用(三)-RabbitMQ开发流程

RabbitMQ开发流程 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>配置MQ 最简配置 spring:rabbitmq:host: mq的安装机器ipport: 5672username: ad…

基于python+mysql的宠物领养网站系统

功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能包括&#xff1a;首页、宠物详情页、用户中心模块。后台功能包括&#xff1a;总览、领养管理、宠物管理、分类…

简单介绍一下WebRTC中NACK机制

WebRTC中的NACK&#xff08;Negative Acknowledgement&#xff09;是一种用于实时通信的网络协议&#xff0c;用于在传输过程中检测和纠正丢包。当接收方检测到数据包丢失时&#xff0c;它会发送一个NACK消息给发送方&#xff0c;请求重新发送丢失的数据包。 NACK的工作原理如…

使用Hutool的ExcelUtil工具导出Excel时遇到的异常

遇到的异常信息&#xff1a; You need to add dependency of ‘poi-ooxml’ to your project, and version > 4.1.2nested exception is java.lang.NoSuchFieldError: Factoryorg.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbookorg.apache.logging.log4j.Log…

忘记管理员密码

1、在/home/jenkins/config.xml中删除&#xff1a; <useSecurity>true</useSecurity><authorizationStrategy class"hudson.security.FullControlOnceLoggedInAuthorizationStrategy"><denyAnonymousReadAccess>false</denyAnonymousRea…

uniapp校验app版本并更新

最近用uniapp写了一个安卓壳子做app&#xff0c;遇到一个需求&#xff0c;校验app版本并更新 通过对比线上版本号和app自己的版本号的差异&#xff0c;唤起更新弹窗 相关代码 App.vue <script>export default {onLaunch: function() {this.checkVersion()},onShow: f…

Hack The Box-Office

端口扫描&信息收集 使用nmap对靶机进行扫描 nmap -sC -sV 10.10.11.3开放了80端口&#xff0c;并且注意到该ip对应的域名为office.htb&#xff0c;将其加入到hosts文件中访问之 注意到扫描出来的还有robots文件&#xff0c;经过尝试后只有administrator界面是可以访问的 …

详解平面点云面积计算

部分代码展示&#xff1a; &#xff08;1&#xff09;利用格网法计算面积&#xff1a; //&#xff08;2&#xff09;测试使用格网法计算平面点云面积 void main() {char *inputpath "D:\\testdata\\data.txt";vector<pcl::PointXYZ> points ReadPointXYZIn…

Java 21 新特性的扫盲级别初体验

一、前言 JDK 21 于 2023 年 9 月发布&#xff0c;作为目前讨论热度最高的JDK&#xff0c;虽然大家都开玩笑说你发任你发&#xff0c;我用Java8&#xff0c;但是作为一个Javaer&#xff0c;对JDK21的新特性还是要有所了解的。 以下是 JDK 21 的新功能列表&#xff1a; 虚拟线…

element-plus日期选择器2次封装

预期效果 官网默认样式&#xff1a; 修改后的样式&#xff1a; 代码实现 DatePicker.vue <template><div class"date-picker-container"><el-date-picker v-model"date" change"handleChange" type"date" value-for…

CMake无Name和Value部分界面

鼠标会变成以下 拉开后就 出现想要的部分

PTA-九九乘法表

从键盘输入n&#xff08;n为1~9&#xff09;&#xff0c;输出九九乘法表的前n行&#xff0c;每个式子按“a * b c”形式输出&#xff0c;其中a和b各占1位列宽&#xff0c;c占4位列宽并左对齐。 输入格式: 一个1~9之间的整数n&#xff0c;如&#xff1a;9 输出&#xff1a; …

牛客小白月赛87 D 小苯的IDE括号问题(hard)

原题链接&#xff1a;D-小苯的IDE括号问题&#xff08;hard&#xff09; 题目大意&#xff1a;给定一个长度为n的字符串&#xff0c;字符串由&#xff08;&#xff0c;&#xff09;和I构成&#xff0c;m组询问&#xff0c;如果输入backspace&#xff0c;如果I左右是&#xff0…

15个学习Go语言的网站推荐

1. Tour of Go 网站地址&#xff1a;tour.golang.org 网站介绍&#xff1a;Tour of Go是一个关于Go语言特性的交互式游览和教程 2. Go by Example 网站地址&#xff1a;gobyexample.com 网站介绍&#xff1a;Go by Example是一个通过一系列可执行代码实例来学习Go语言的优…

Java解决删除某些元素后的数组均值

Java解决删除某些元素后的数组均值 01 题目 给你一个整数数组 arr &#xff0c;请你删除最小 5% 的数字和最大 5% 的数字后&#xff0c;剩余数字的平均值。 与 标准答案 误差在 10-5 的结果都被视为正确结果。 示例 1&#xff1a; 输入&#xff1a;arr [1,2,2,2,2,2,2,2,…

最优字符串分隔符:零宽度空格和字符

引言 在文本处理和格式化中&#xff0c;选择合适的分隔符是至关重要的。 本文将在介绍两个不常见但功能强大的分隔符&#xff1a;零宽度空格和&#x10000;字符。 零宽度空格&#xff08;Zero Width Space&#xff09; 零宽度空格是Unicode字符集中的一个特殊字符&#xff…

2024前端面试准备之uniapp篇

全文链接!!!!!!! 1. UniApp和其他跨平台框架(如React Native、Flutter)有什么区别? 语言和技术栈:UniApp使用Vue.js作为开发语言和技术栈,而React Native使用React.js,Flutter使用Dart语言。开发者可以根据自己的技术背景和偏好选择合适的框架。 性能和体验:Uni…