留一法交叉验证 Leave-One-Out Cross Validation
交叉验证法,就是把一个大的数据集分为 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相关推荐
- Python为给定模型执行留一法交叉验证实战LOOCV(leave-one-out cross-validation)
Python为给定模型执行留一法交叉验证实战LOOCV(leave-one-out cross-validation) 目录 Python为给定模型执行留一法交叉验证实战LOOCV(leave-one ...
- R中的留一法交叉验证(带有示例)
为了评估模型在数据集上的性能,我们需要衡量模型所做的预测与观察到的数据的匹配程度. 一种常用的方法称为留一法交叉验证(LOOCV),它使用以下方法: 1.将数据集拆分为训练集和测试集,使用除一个观察之 ...
- R 编程中的 LOOCV(留一法交叉验证)
LOOCV(Leave One Out Cross-Validation)是一种交叉验证方法,其中每个观察被视为验证集,其余(N-1)个观察被视为训练集.在 LOOCV 中,模型的拟合完成并使用一个观 ...
- 机器学习代码实战——K折交叉验证(K Fold Cross Validation)
文章目录 1.实验目的 2.导入数据和必要模块 3.比较不同模型预测准确率 3.1.逻辑回归 3.2.决策树 3.3.支持向量机 3.4.随机森林 1.实验目的 使用sklearn库中的鸢尾花数据集, ...
- 留一法(交叉验证法,Leave-One-Out Cross Validation)
交叉验证法 这种方法比较简单易懂,就是把一个大的数据集分为k个小数据集,其中k-1个作为训练集,剩下的一个作为测试集,然后选择下一个作为测试集,剩下的k-1个作为训练集,以此类推.这其中,k的取值就比 ...
- 转-----交叉验证、留一交叉验证、自助法
机器学习包括许多算法:线性回归.逻辑回归.决策树.SVM.随机森林.GBDT等等.那么该如何评价某个算法在数据集上的表现呢?这里阐述3个评估方法:交叉验证.留一交叉验证.自助法. 当数据集数量有限时, ...
- matlab实现留一交叉验证,留出法和交叉验证
写论文的时候涉及到了这两种方法,这里进行总结. 评估方法 主要分三种: 留出法(分一次 互斥集) 交叉验证法(分多次 对k折形成多次互斥集) 自助法(有放回抽样) 留出法 代码如下: function ...
- 交叉验证(s折、分层、留一法)
目录 交叉验证原理 交叉验证分类 1.标准交叉验证(s折交叉验证) 代码实现 2.分层交叉验证 代码实现 StratifiedKFold参数 3.留一法交叉验证 代码实现 代码说明 交叉验证原理 交叉 ...
- 交叉验证方法汇总【附代码】(留一法、K折交叉验证、分层交叉验证、对抗验证、时间序列交叉验证)
目录 交叉验证是什么? 留一验证(LOOCV,Leave one out cross validation ) LOOCC代码 验证集方法 验证集方法代码 K折交叉验证(k-fold cross va ...
最新文章
- Hadoop对Spark:正面比拼报告(架构、性能、成本、安全性和机器学习)
- 腾讯物联网操作系统正式开源,最小体积仅1.8 KB
- oracle查询cpu占用率高,ORACLE杀掉cpu占用率高的session
- django和mysql写注册_Django电商项目---完成注册页面和用户登录
- 锤子濒危、金立倒闭,华米 OV 们如何艰难求生?
- mysql重复添加计数_从MySQL中的单个列获取重复值的计数?
- python截图保存到内存卡_没有长截图功能,一招即可截下来!
- Java实战之管家婆记账系统(16)——条形图展示数据界面及功能实现
- JavaScript常见的六种继承方式
- mysql删除某天前的数据
- 游戏逆向 修改植物大战僵尸阳光值
- CSP 201809-2 买菜
- Java设置小数点位数小妙招
- 前端必备知识储存——HTML篇一(面试常考)
- 无网卡驱动,电脑可以用Usb线联网
- 《MySQL数据库进阶实战》读后感(SQL 小虚竹)
- 用c语言编写爱心的代码是什么
- python sort多条件排序
- DSG SuperSync大型数据库高性能复制平台产品介绍
- matlab 图像采集,基于 Matlab 的深度图像采集与处理