交叉验证法,就是把一个大的数据集分为 kkk 个小数据集,其中 k−1k-1k−1 个作为训练集,剩下的 111 个作为测试集,在训练和测试的时候依次选择训练集和它对应的测试集。这种方法也被叫做 kkk 折交叉验证法(k-fold cross validation)。最终的结果是这 k 次验证的均值。

此外,还有一种交叉验证方法就是 留一法(Leave-One-Out,简称LOO),顾名思义,就是使 kkk 等于数据集中数据的个数,每次只使用一个作为测试集,剩下的全部作为训练集,这种方法得出的结果与训练整个测试集的期望值最为接近,但是成本过于庞大。

我们用SKlearn库来实现一下LOO:

from sklearn.model_selection import LeaveOneOut# 一维示例数据
data_dim1 = [1, 2, 3, 4, 5]# 二维示例数据
data_dim2 = [[1, 1, 1, 1],[2, 2, 2, 2],[3, 3, 3, 3],[4, 4, 4, 4],[5, 5, 5, 5]]loo = LeaveOneOut() # 实例化LOO对象# 取LOO训练、测试集数据索引
for train_idx, test_idx in loo.split(data_dim1):# train_idx 是指训练数据在总数据集上的索引位置# test_idx 是指测试数据在总数据集上的索引位置print("train_index: %s, test_index %s" % (train_idx, test_idx))# 取LOO训练、测试集数据值
for train_idx, test_idx in loo.split(data_dim1):# train_idx 是指训练数据在总数据集上的索引位置# test_idx 是指测试数据在总数据集上的索引位置train_data = [data_dim1[i] for i in train_idx]test_data = [data_dim1[i] for i in test_idx]print("train_data: %s, test_data %s" % (train_data, test_data))

data_dim1的输出:

train_index: [1 2 3 4], test_index [0]
train_index: [0 2 3 4], test_index [1]
train_index: [0 1 3 4], test_index [2]
train_index: [0 1 2 4], test_index [3]
train_index: [0 1 2 3], test_index [4]train_data: [2, 3, 4, 5], test_data [1]
train_data: [1, 3, 4, 5], test_data [2]
train_data: [1, 2, 4, 5], test_data [3]
train_data: [1, 2, 3, 5], test_data [4]
train_data: [1, 2, 3, 4], test_data [5]

data_dim2的输出:

train_index: [1 2 3 4], test_index [0]
train_index: [0 2 3 4], test_index [1]
train_index: [0 1 3 4], test_index [2]
train_index: [0 1 2 4], test_index [3]
train_index: [0 1 2 3], test_index [4]train_data: [[2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4], [5, 5, 5, 5]], test_data [[1, 1, 1, 1]]
train_data: [[1, 1, 1, 1], [3, 3, 3, 3], [4, 4, 4, 4], [5, 5, 5, 5]], test_data [[2, 2, 2, 2]]
train_data: [[1, 1, 1, 1], [2, 2, 2, 2], [4, 4, 4, 4], [5, 5, 5, 5]], test_data [[3, 3, 3, 3]]
train_data: [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [5, 5, 5, 5]], test_data [[4, 4, 4, 4]]
train_data: [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]], test_data [[5, 5, 5, 5]]

留一法交叉验证 Leave-One-Out Cross Validation相关推荐

  1. Python为给定模型执行留一法交叉验证实战LOOCV(leave-one-out cross-validation)

    Python为给定模型执行留一法交叉验证实战LOOCV(leave-one-out cross-validation) 目录 Python为给定模型执行留一法交叉验证实战LOOCV(leave-one ...

  2. R中的留一法交叉验证(带有示例)

    为了评估模型在数据集上的性能,我们需要衡量模型所做的预测与观察到的数据的匹配程度. 一种常用的方法称为留一法交叉验证(LOOCV),它使用以下方法: 1.将数据集拆分为训练集和测试集,使用除一个观察之 ...

  3. R 编程中的 LOOCV(留一法交叉验证)

    LOOCV(Leave One Out Cross-Validation)是一种交叉验证方法,其中每个观察被视为验证集,其余(N-1)个观察被视为训练集.在 LOOCV 中,模型的拟合完成并使用一个观 ...

  4. 机器学习代码实战——K折交叉验证(K Fold Cross Validation)

    文章目录 1.实验目的 2.导入数据和必要模块 3.比较不同模型预测准确率 3.1.逻辑回归 3.2.决策树 3.3.支持向量机 3.4.随机森林 1.实验目的 使用sklearn库中的鸢尾花数据集, ...

  5. 留一法(交叉验证法,Leave-One-Out Cross Validation)

    交叉验证法 这种方法比较简单易懂,就是把一个大的数据集分为k个小数据集,其中k-1个作为训练集,剩下的一个作为测试集,然后选择下一个作为测试集,剩下的k-1个作为训练集,以此类推.这其中,k的取值就比 ...

  6. 转-----交叉验证、留一交叉验证、自助法

    机器学习包括许多算法:线性回归.逻辑回归.决策树.SVM.随机森林.GBDT等等.那么该如何评价某个算法在数据集上的表现呢?这里阐述3个评估方法:交叉验证.留一交叉验证.自助法. 当数据集数量有限时, ...

  7. matlab实现留一交叉验证,留出法和交叉验证

    写论文的时候涉及到了这两种方法,这里进行总结. 评估方法 主要分三种: 留出法(分一次 互斥集) 交叉验证法(分多次 对k折形成多次互斥集) 自助法(有放回抽样) 留出法 代码如下: function ...

  8. 交叉验证(s折、分层、留一法)

    目录 交叉验证原理 交叉验证分类 1.标准交叉验证(s折交叉验证) 代码实现 2.分层交叉验证 代码实现 StratifiedKFold参数 3.留一法交叉验证 代码实现 代码说明 交叉验证原理 交叉 ...

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

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

最新文章

  1. Hadoop对Spark:正面比拼报告(架构、性能、成本、安全性和机器学习)
  2. 腾讯物联网操作系统正式开源,最小体积仅1.8 KB
  3. oracle查询cpu占用率高,ORACLE杀掉cpu占用率高的session
  4. django和mysql写注册_Django电商项目---完成注册页面和用户登录
  5. 锤子濒危、金立倒闭,华米 OV 们如何艰难求生?
  6. mysql重复添加计数_从MySQL中的单个列获取重复值的计数?
  7. python截图保存到内存卡_没有长截图功能,一招即可截下来!
  8. Java实战之管家婆记账系统(16)——条形图展示数据界面及功能实现
  9. JavaScript常见的六种继承方式
  10. mysql删除某天前的数据
  11. 游戏逆向 修改植物大战僵尸阳光值
  12. CSP 201809-2 买菜
  13. Java设置小数点位数小妙招
  14. 前端必备知识储存——HTML篇一(面试常考)
  15. 无网卡驱动,电脑可以用Usb线联网
  16. 《MySQL数据库进阶实战》读后感(SQL 小虚竹)
  17. 用c语言编写爱心的代码是什么
  18. python sort多条件排序
  19. DSG SuperSync大型数据库高性能复制平台产品介绍
  20. matlab 图像采集,基于 Matlab 的深度图像采集与处理

热门文章

  1. 用苹果CMS搭建电影网站教程
  2. 包工协议书样本_小工程承包合同协议书
  3. Linux 命令手册大全 ! 建议收藏 !纯手打
  4. 2013 9.10       光大环保之行的自我总结(有点伤心)
  5. pytest 测试开发 —— 上手 pytest 实现自动化测试
  6. 谷歌翻译接口识别语言php,利用谷歌翻译接口实现网站多语言切换
  7. 上床前告诉设计师的15句真心话
  8. 交换机与路由技术-27-OSPF路由重分发
  9. 戴尔服务器r330系统安装,Dell 服务器 PowerEdge R330
  10. ftp协议及简单配置