因需要拿出部分数据作为测试,故总有部分数据不能用于构建模型,一种更好选择是交叉验证(简称CV)。k折交叉验证是交叉验证方法中的一种(是进行模型比较的有效方法),将整体数据集分为k份(每份近似相等),其中k-1份作为训练数据,另外一份作为验证数据集,并计算预测误差平方和。用验证集来验证所得分类器或模型的错误率,循环以上实验k次,直到所有k份数据都被选择一遍为止。选择小一点的k容易高方差,大一点的k容易高偏差,通常k=10

计算这r个验证集预测误差平方和的平均值,平均值最小的模型是最优模型。待最优模型选定后,仍然需要基于全体训练样本集估计模型参数。交叉验证存在着划分方式的不同情况,因此可采用不同划分方式重复进行交叉验证。如利用不同划分方式划分数据5次,每次均划分10折,即称之为5次10折交叉验证

交叉验证还有一种特殊情况称为留一交叉验证(leave one Out)。令样本划分次数k等于数据集合D的样本数量n,即每份子集只包含一个样本。优点是每次训练集都与原始数据集接近,且也能做到训练集与测试集对立,可保证得到结果相对比较准确。相对而言采取这种方式意味着计算开销会大大增加

交叉验证同样需要先进行分层,再组合构造成k份近似相等的样本集,这样训练集和测试集的数据分布均与原数据大体相同

#交叉检验前需要对数据分组,要符合随机且平均
CVgroup<-function(k,datasize,seed){cvlist<-list()set.seed(seed)n<-rep(1:k,ceiling(datasize/k))[1:datasize] #向上取整temp<-sample(n,datasize)        #无放回抽样将n打乱x<-1:kdataseq<-1:datasize
#dataseq中随机生成k个随机有序数据列
cvlist<-lapply(x,function(x) dataseq[temp==x])  return(cvlist)
}#k折交叉验证实现随机森林
data<-iris
k=10
cvlist=CVgroup(k,nrow(data),seed=23)library(plyr)
library(randomForest)
j<-seq(10,1000,by=20)       #随机森林决策树数量,间隔过小无实际意义
i<-1:k
i<-rep(i,times=length(j))
j<-rep(j,each=k)
x<-cbind(i,j)                #在循环更换验证集条件下,都用10个决策树建立随机森林
cvtest<-function(i,j){train<-data[-cvlist[[i]],]test<-data[cvlist[[i]],]model<-randomForest(Sepal.Length~.,data=train,ntree=j)prediction<-predict(model,subset(test,select=-Sepal.Length))temp<-data.frame(cbind(subset(test,select=Sepal.Length),prediction))
}

k折交叉验证概述-附R语言实现相关推荐

  1. k折交叉验证优缺点_k折交叉验证(R语言)

    "机器学习中需要把数据分为训练集和测试集,因此如何划分训练集和测试集就成为影响模型效果的重要因素.本文介绍一种常用的划分最优训练集和测试集的方法--k折交叉验证." k折交叉验证 ...

  2. k折交叉验证优缺点_R语言中K邻近算法的初学者指南:从菜鸟到大神(附代码&链接)...

    作者:Leihua Ye, UC Santa Barbara 翻译:陈超 校对:冯羽 本文约2300字,建议阅读10分钟 本文介绍了一种针对初学者的K临近算法在R语言中的实现方法. 本文呈现了一种在R ...

  3. R中的 K折交叉验证

    为了评估模型在数据集上的性能,我们需要衡量模型所做的预测与观察到的数据的匹配程度. 一种常用的方法称为k 折交叉验证,它使用以下方法: 1.将数据集随机分成 大小大致相等的k 组或"折叠&q ...

  4. 交叉验证方法汇总【附代码】(留一法、K折交叉验证、分层交叉验证、对抗验证、时间序列交叉验证)

    目录 交叉验证是什么? 留一验证(LOOCV,Leave one out cross validation ) LOOCC代码 验证集方法 验证集方法代码 K折交叉验证(k-fold cross va ...

  5. 机器学习实战---朴素贝叶斯算法实现+使用K折交叉验证(代码详解+创新)

    <机器学习实战朴素贝叶斯算法实现+使用K折交叉验证> 未经允许,不得擅自转载! 提供数据集如下(永久有效,需要的自行下载): 链接:https://pan.baidu.com/s/1Sv0 ...

  6. Pytorch最简单的图像分类——K折交叉验证处理小型鸟类数据集分类2.0版本ing

    https://blog.csdn.net/hb_learing/article/details/110411532 https://blog.csdn.net/Pl_Sun/article/deta ...

  7. k折交叉验证法python实现_Jason Brownlee专栏| 如何解决不平衡分类的k折交叉验证-不平衡分类系列教程(十)...

    作者:Jason Brownlee 编译:Florence Wong – AICUG 本文系AICUG翻译原创,如需转载请联系(微信号:834436689)以获得授权 在对不可见示例进行预测时,模型评 ...

  8. k折交叉验证优缺点_都说K折交叉验证最常见,你会做吗?

    在临床研究领域,大家特别希望能够未仆先知,于是临床研究者尝试去建立各种预测模型.比如,凭借孕妇的信息预测低出生体重儿的结局.怎么建立预测模型呢?常见的做法是这样的:以低出生体重儿为因变量,以相关的孕妇 ...

  9. 五折交叉验证/K折交叉验证, python代码到底怎么写

    五折交叉验证: 把数据平均分成5等份,每次实验拿一份做测试,其余用做训练.实验5次求平均值.如上图,第一次实验拿第一份做测试集,其余作为训练集.第二次实验拿第二份做测试集,其余做训练集.依此类推~ 但 ...

最新文章

  1. makefile 库目录
  2. CNNIC发布“网域”DNS系列产品了
  3. java泛型约束_JAVA泛型 - 约束与局限性
  4. python中frame中的元素怎么识别_python3.6+selenium实现操作Frame中的页面元素
  5. 【老王来了】之隔壁路由器坏了,他来了...
  6. 后缀数组--(可重叠最长重复子串问题)
  7. 顺序程序设计03 - 零基础入门学习C语言09
  8. 微软亚洲研究院20周年庆典:纳德拉致敬、沈向洋展望
  9. 比特币科普:区块链技术神奇在哪里?
  10. 一步步构造自己的vue2.0+webpack环境
  11. mysql的驱动connect放在哪里_十年测试解析:ddt结合excel,csv,mysql实现自动化测试数据驱动...
  12. 哈工大密码学实验(CA证书认证系统)
  13. 卡内基梅隆 计算机音乐,卡内基梅隆大学音乐技术专业申请要求
  14. php数据统计模板,PHP如何使用Echarts生成数据统计报表
  15. IDEA炫酷的主题字体颜色设置
  16. CodeForces #379(734A|734B|734C|734D|734E|734F)|二分查找|模拟|树的半径|位运算
  17. sigmoid函数sigmoid求导
  18. 狂奔的“智慧校园”:监控学生的生意,会持续吗?
  19. CComObject 。。。(转)
  20. Golang占位符大全

热门文章

  1. android 8不能清理内存,安卓手机内存机制揭秘 清理释放RAM对提速无效
  2. 21秋北京中医药大学《中药鉴定学B》平时作业6
  3. Halcon算子:smallest_rectangle1()和smallest_rectangle2()
  4. 白酒上甑工艺工业机器人系统研究
  5. 最美公式:世上最伟大的十个公式
  6. 微信小程序 - 根据后端返回的唯一 ID / code,生成 “唯一“ 的推荐码、邀请码、订单号、加密路由、一串英文+数字长字符等 (支持反序列化原 ID 解码,逆向得出 ID 二者互转)wechat
  7. ios开发: APNS消息推送实现
  8. 小白怎么入门漫画,难学么?
  9. 为什么学卫生管理要学c语言,卫生信息管理专业是学什么的
  10. Inside Java Newscast #1 深度解读