代码+视频基于R语言进行K折交叉验证
我们在建立数据模型后通常希望在外部数据验证模型的检验能力。然而当没有外部数据可以验证的时候,交叉验证也不失为一种方法。交叉验验证(交叉验证,CV)则是一种评估模型泛化能力的方法,广泛应用中于数证据采挖掘和机器学习领域,在交叉验证通常将数据集分为两部分,一部分为训练集,用于建立预测模型;另一部分为测试集,用于测试该模型的泛化能力。
在如何划分2个集合的问题上,统计学界提出了多种方法:简单交叉验证、留一交叉验证、k折交叉验证、多重三折交叉验证、分层法、自助法等。
简单交叉验证:是我们临床论文中最常使用到的,从数据中随机选择中随机选择70%点的数据作为训练集建立模型,30%的数据当做外部数据来验证模型的预测能力。但其最终所得结果与集合划分比率密切相关,不同划分比率结果变异可能较大。该方法在总数据据集并不是非常大的情形下很难达到准确实评模型的目的。
留一交叉验证是指:假设在总集合中共有有n个体,每次选取1个体作为测试试集,其余个体作为训练集。总共进行n 次训练,取平均值是最终评价指标。留一交叉验证较为可靠靠,在每次模型训练中纳入几度乎所有个体,当总集合中个体 数目轨迹的情势下计算时间较长。
k折交叉验证:可以看成是留一交叉验证的简化版,是将原始数据据随机平均分为k个子集(通常5-10个),每个子集做测试集的同时,其余k-1个子集合并作为训练 ,进行 k 次训练,取各评价指标(灵敏度、特异度、AUC等)的平均值。测试通过平均的评价指来降低训练集和测试集划分方式对预测结果的影响,有研究值表明k 折评估准准确性高,当k为5或10时在评估准准后性和计算复杂性下综合性能最优。
10折交叉验证是指将原始数据集随机划分为样本数近乎相等的10个子集,轮流将其中的9个合并作为训练集,其余1个作为测试试集。算正确率等评价指标,最终终通过K次试验验后取评价指标的平均值来评估该模型的泛化能力。
10折交叉证验证的基本步骤下:
( 1)原始数据集划分为10个样本量尽可均衡的子集;
( 2)使用第1个子集作为测试集,第2~9个子集合并作为训练集;
( 3)使用训练集对模型进行训练,计算多种评价指标在测试集下的结果;
( 4)重复2 ~3 步流亜,轮将第2 ~10个子集作为测试集;
( 5)计算各评价指标的平均值作为最终结果。

今天我们通过视频来演示k折交叉验证(K取10),需要使用到caret包和pROC包,需要使用到我们既往的不孕症数据(公众号回复:不孕症,可以获得该数据)
基于R语言进行K折交叉验证
代码:
library("caret")
library(pROC)
###公众号回复:不孕症,可以获得这个数据
bc<-read.csv("E:/r/test/buyunzheng.csv",sep=',',header=TRUE)
###
bc$education<-ifelse(bc$education=="0-5yrs",0,ifelse(bc$education=="6-11yrs",1,2))
bc$spontaneous<-as.factor(bc$spontaneous)
bc$case<-as.factor(bc$case)
bc$induced<-as.factor(bc$induced)
bc$education<-as.factor(bc$education)
####拆分数据
set.seed(666)
folds <- createFolds(y=bc$case,k=10)###分成10份
#####我们先来做第一个数据的,要提取列表的数据,需要做成[[1]]这种形式,
fold_test <- bc[folds[[1]],]#取fold 1数据,建立测试集和验证集
fold_train <- bc[-folds[[1]],]#
######
fold_pre <- glm(case ~ age + parity +spontaneous,family = binomial(link = logit), data =fold_train )###建立模型
fold_predict <- predict(fold_pre,type='response',newdata=fold_test)##生成预测值roc1<-roc((fold_test[,5]),fold_predict)
round(auc(roc1),3)##AUC
round(ci(roc1),3)##95%CI##得出结果后我们可以进一步画图
plot(roc1, print.auc=T, auc.polygon=T, grid=c(0.1, 0.2),grid.col=c("green", "red"), max.auc.polygon=T,auc.polygon.col="skyblue", print.thres=T)plot(1-roc1$specificities,roc1$sensitivities,col="red",lty=1,lwd=2,type = "l",xlab = "specificities",ylab = "sensitivities")
abline(0,1)
legend(0.7,0.3,c("auc=0.34","ci:0.457-0.99."),lty=c(1),lwd=c(2),col="red",bty = "n")# 嫌一个一个做比较麻烦的话我们也可以做成循环,一次跑完结果
# 先建立一个auc的空值,不然跑不了auc_value<-as.numeric()for(i in 1:10){fold_test <- bc[folds[[i]],] #取folds[[i]]作为测试集fold_train <- bc[-folds[[i]],] # 剩下的数据作为训练集fold_pre <- glm(case ~ age + parity +spontaneous,family = binomial(link = logit), data =fold_train )fold_predict <- predict(fold_pre,type='response',newdata=fold_test)auc_value<- append(auc_value,as.numeric(auc(as.numeric(fold_test[,5]),fold_predict)))
}
####
mean(auc_value)相关文章:
代码+视频基于R语言进行K折交叉验证
我们在建立数据模型后通常希望在外部数据验证模型的检验能力。然而当没有外部数据可以验证的时候,交叉验证也不失为一种方法。交叉验验证(交叉验证,CV)则是一种评估模型泛化能力的方法,广泛应用…...
第一篇【传奇开心果系列】Python的pyttsx3库技术点案例示例:文本转换语言
传奇开心果短博文系列 系列短博文目录Python的pyttsx3库技术点案例示例系列 短博文目录前言一、pyttsx3主要特点和功能介绍二、pyttsx3文字转语音操作步骤介绍三、多平台支持介绍和示例代码四、多语言支持介绍和示例代码五、自定义语言引擎介绍和示例代码六、调整语速和音量介绍…...
@ 代码随想录算法训练营第7周(C语言)|Day43(动态规划)
代码随想录算法训练营第7周(C语言)|Day43(动态规划) Day41、动态规划(包含题目 ● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零 ) 1049. 最后一块石头的重量 II 题目描述 有一堆石头&am…...
深度学习的新进展:探索人工智能的未来
文章目录 📑引言深度学习技术概述计算机视觉领域的深度应用自然语言处理的深度革命跨领域应用的深度拓展深度学习的挑战与未来展望结语 📑引言 在科技日新月异的今天,深度学习作为人工智能领域的一颗璀璨明珠,正在引领着技术创新…...
Vue中@change、@input和@blur、@focus的区别及@keyup介绍
Vue中change、input和blur、focus的区别及keyup介绍 1. change、input、blur、focus事件2. keyup事件3. 补充:el-input的change事件自定义传参 1. change、input、blur、focus事件 change在输入框发生变化且失去焦点后触发; input在输入框内容发生变化后…...
Raspbian简易RTSP服务
Raspbian简易RTSP服务 1. 源由2. 搭建简易RTSP服务器2.1 系统安装2.2 软件安装2.3 命令介绍2.3.1 libcamera-hello2.3.2 libcamera-vid2.3.3 cvlc 3. 实测4. 参考资料 1. 源由 鉴于前期的一些准备工作: 《ArduPilot开源飞控之Companion Computers简单分析》《Ardu…...
【ASP.NET 6 Web Api 全栈开发实战】--前言
《ASP.NET 6 Web Api 实战》专栏通过一步一步的开发并完善一个记账软件项目,来引导大家学习相关的知识,其中的知识包括但不限于如下内容: Web Api 开发.NET 6 项目微服务架构的搭建身份认证移动端应用开发more。。。 专栏结构 专栏分为单体…...
跳过mysql8.0密码重置密码 Shell脚本
要在 MySQL 8.0 中通过 Shell 脚本跳过密码验证以重置密码,你可以遵循以下步骤:首先,确保你有足够的权限来编辑配置文件和重启 MySQL 服务。下面是一个简单的 Shell 脚本示例,该脚本展示了如何跳过密码验证以重置 MySQL 8.0 的 ro…...
Maven之安装自定义jar到本地Maven仓库中
Maven之安装自定义jar到本地Maven仓库中 文章目录 Maven之安装自定义jar到本地Maven仓库中1. 命令行窗口安装方式1. 常用参数说明2. 安装实例 2. IDEA中安装方式3. 使用 1. 命令行窗口安装方式 安装指定文件到本地仓库命令:mvn install:install-file; 在windows的cm…...
SPI控制8_8点阵屏
协议与硬件概述 SPI SPI是串行外设接口(Serial Peripheral Interface)的缩写。是一种高速的(10Mbps)的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线。 引脚介绍 SCLK:…...
2.10
头文件: #include <sqlite3.h> 编译时候要加上-lsqlite3 gcc a.c -lsqlite3 1)sqlite3_open 打开一个数据库,如果数据库不存在,则创建一个数据库 2)sqlite3_close 关闭数据库,断开句柄所拥有的资…...
计算机服务器中了360后缀勒索病毒怎么办?360后缀勒索病毒处理流程
网络技术的不断应用与发展,为企业的生产运营提供了有利保障,越来越多的企业走向数字化办公模式,并且企业的发展离不开数据支撑,重视数据安全成为了众多企业关心的主要话题。春节前后,云天数据恢复中心接到很多企业的求…...
BigDecimal的常用API
BigDecimal用于解决浮点型运算时结果出现失真的问题。 这里0.20.1等于0.3就出现了失真 import java.math.BigDecimal; import java.math.RoundingMode;public class Test {public static void main(String[] args) {//BigDeciaml的使用:解决小数运算失真的问题doub…...
Android---Jetpack Compose学习005
动画 1. 简单值动画 示例:背景颜色在紫色和绿色之间,以动画形式切换。使用 animateColorAsState() val backgroundColor by animateColorAsState(if (tabPage TabPage.Home) Purple100 else Green300) 该句代码中,有一个 backgroundColo…...
安卓价值1-如何在电脑上运行ADB
ADB(Android Debug Bridge)是Android平台的调试工具,它是一个命令行工具,用于与连接到计算机的Android设备进行通信和控制。ADB提供了一系列命令,允许开发人员执行各种操作,包括但不限于: 1. 安…...
第三百四十七回
文章目录 1. 概念介绍2. 原理与方法2.1 知识对比2.2 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"加密包crypto"相关的内容,本章回中将介绍characters包.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 在项目中会遇到获取字…...
23种设计模式之原型模式
目录 什么是原型模式 为什么使用原型模式 原型模式的基本结构 原型模式的实现步骤 实现代码(含注释) 使用场景 什么是原型模式 原型模式是一种创建型设计模式,该模式的核心思想是基于现有的对象创建新的对象,而不是从头开…...
揭秘Angular世界的奥秘:全面提升你的前端开发技能!
介绍:Angular是一个由Google维护的开源JavaScript框架,专为构建Web应用程序而设计,特别适合开发大型单页应用(SPA)。以下是对Angular的详细介绍: 技术栈:Angular使用HTML作为模板语言࿰…...
【开源】SpringBoot框架开发企业项目合同信息系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 合同审批模块2.3 合同签订模块2.4 合同预警模块2.5 数据可视化模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 合同审批表3.2.2 合同签订表3.2.3 合同预警表 四、系统展示五、核心代码5.1 查询合同…...
高斯伪谱C++封装库开源!
Windows x64/86 C无依赖运行高斯伪谱法求解最优控制问题,你只需要ElegantGP! Author: Y. F. Zhang His Github: https://github.com/ZYunfeii 写在前面 这个库在你下载它的那一时刻起不再依赖任何其他代码,直接可用来构建C的最优控制问题并进行求解。…...
CA6140车床拨叉831003加工工艺及铣左端面夹具设计【说明书+CAD图纸+SW三维】
CA6140车床拨叉831003作为机床传动系统中的关键零件,其加工质量直接影响设备运行的稳定性。该零件的加工工艺需兼顾尺寸精度与表面粗糙度要求,重点在于左端面的铣削加工。传统工艺方案多采用通用夹具定位,存在装夹效率低、重复定位精度差等问…...
5B00,5B01,5B02,1700,1701,1702,1704,P07清零软件G3800,TS3480 ,TS3380 ,G3000,G1810,TS9020, TS8020,TS3480
下载地址:链接:https://pan.baidu.com/s/1j7Nwv715wX1JL3qidnGyXA?pwd0000 提取码:0000 常见 佳能打印机 型号: G5080 G6080 G7080 G1810 G2810 G3810 G4810 G1800 G2800 G3800 G4800 G5010 G6010 G7010 G1010 G2010 G3010 G4010 G1000 G2000 G3000 G40…...
从零打造你的CAD开发环境:用OpenCASCADE 7.7.0 + VS2022画个3D盒子(完整Debug/Release配置)
从零打造你的CAD开发环境:用OpenCASCADE 7.7.0 VS2022画个3D盒子(完整Debug/Release配置) 当你第一次尝试在Visual Studio中配置OpenCASCADE(OCCT)时,可能会被那些复杂的路径设置、库文件链接和环境变量搞…...
爱毕业aibye发布六大权威平台排名,智能改写与高效写作功能一键完成,科研必备的AI工具
工具名称 核心功能 特色优势 Aibiye 论文生成降AI率 全学科覆盖、仿写优化、自动图表生成 Aicheck AI检测文献综述辅助 精准查新、3分钟高效成文 GPT学术版 润色/翻译/代码解释 多模型协同、PDF深度解析 摆平论文 大纲生成降重改写 三步出稿、本硕博通用 QuillB…...
罗技鼠标宏压枪脚本:绝地求生精准射击的终极解决方案
罗技鼠标宏压枪脚本:绝地求生精准射击的终极解决方案 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中的后坐力控…...
Excel报表自动化:用JXLS实现动态数据填充的5个高级技巧
Excel报表自动化:用JXLS实现动态数据填充的5个高级技巧 每次看到同事手动复制粘贴数据到Excel模板时,我都忍不住想分享JXLS这个神器。作为Java开发者,我们完全可以用代码实现专业级报表自动化,告别重复劳动。本文将带你深入JXLS的…...
SpringBoot+Vue实战:手把手教你搭建苍穹外卖后台管理系统(含Nginx配置避坑指南)
SpringBootVue全栈实战:从零构建外卖管理系统与Nginx部署精要 每次打开招聘网站,看到"要求有完整项目经验"的字样时,你是否也感到一阵心虚?作为全栈开发的学习者,我们往往陷入一个怪圈:学了很多碎…...
低查重AI教材写作指南,用对AI工具让教材创作更省心!
整理教材中的知识点实际上是项“精细活”,其中最大的挑战在于处理好平衡与衔接!我们常常担心会遗漏核心知识点,或者难以把握合适的难度——例如,小学教材有时难以理解,而高中教材又显得过于简单,缺乏深度和…...
MogFace人脸检测工具保姆级教程:Streamlit状态管理实现连续检测流程
MogFace人脸检测工具保姆级教程:Streamlit状态管理实现连续检测流程 1. 项目简介与核心价值 你是不是遇到过这样的场景?团队合影需要快速统计人数,或者从一张复杂的照片里找出所有人脸的位置。传统方法要么精度不够,要么操作复杂…...
SGMICRO圣邦微 SGM8708YN8G/TR SOT-23 比较器
特性 低静态电流:在Vs1.8V时,典型值为2.2pA VOUT和VOUT双输出宽单电源电压范围:1.8V至5.5V 包含锁存功能 轨到轨输入和输出推挽输出电流驱动:在Vs5V时,典型值为18mA 内部1.2V参考电压工作温度范围:-40C至85C提供绿色S0T-23-8和S0IC-8封装...
