K折交叉验证实现

K折交叉验证

k折交叉验证是划分数据集的一种方式,特别适合少量数据集
在原始数据中划分k份,取1份作为测试集,k-1份作为训练集
最后算出平均性能值

以MINIST数据为例子

```python
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
#加载数据集
minst=keras.datasets.mnist.load_data()#训练集和测试集分别有60000和10000
(x_train,y_train),(x_test,y_test)=minst#下面我要将训练集和测试集重新组合成一个训练集,相应的标签也要重组#这里使用numpy的垂直方向堆叠
x_data=np.vstack((x_train,x_test))#这里使用numpy的水平方向堆叠
y_label=np.hstack((y_train,y_test))#测试堆叠是否正确 结果标签为3 打印的标签也为3
plt.imshow(x_data[65000])
print(y_label[65000])

#令k=5 epochs=5k=5
num_epochs=5#算出滑动步长 x_data的shape为(70000,28,28) 划分5组 每个步长为14000
slid_step=int(x_data.shape[0]/k)#数据类型转换
x_data.astype(dtype='float32')
y_label.astype(dtype="int32")#historys用来记录5组loss,auc,val_loss,val_auc
historys=[]
#五组实验
for i in range(k):x_test, y_test = x_data[i * slid_step:(i + 1) * slid_step],y_label[i * slid_step:(i + 1) * slid_step]x_train, y_train = x_data[i * slid_step:], y_label[i  * slid_step:]#搭建结构model = keras.models.Sequential([keras.layers.Flatten(),keras.layers.Dense(128, activation='relu'),keras.layers.Dense(10, activation='softmax')])model.compile(optimizer="rmsprop", loss=keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])history = model.fit(x_train, y_train, epochs=num_epochs,batch_size=128,validation_data=(x_test,y_test))historys.append(history.history)

然后算出各项平均指标

loss_mean=[]
for i in range(5):plt.subplot(1,5,i+1)plt.plot(list(range(1,6)),list(historys[i].values())[0])loss_mean.append(np.sum(list(historys[i].values())[0])/5)plt.title("loss")
plt.show()
print(loss_mean)
print("均值loss:",sum(loss_mean)/5)

在这里插入图片描述
[0.9816258639553614, 1.2614621218195983, 1.634634684441948, 2.221515530428221, 3.0848385429355782]
均值loss: 1.8368153487161414

acc_mean=[]
for i in range(5):plt.subplot(1,5,i+1)plt.plot(list(range(1,6)),list(historys[i].values())[1])acc_mean.append(np.sum(list(historys[i].values())[1])/5)plt.title("acc")
plt.show()  
print(acc_mean)
print("平均值acc:",sum(acc_mean)/5)

[0.9320542335510253, 0.9282821655273438, 0.9242952346801758, 0.9239570617675781, 0.9144857406616211]
“平均值acc:” 0.9246148872375489
在这里插入图片描述

val_loss=[]
for i in range(5):plt.subplot(1,5,i+1)plt.plot(list(range(1,6)),list(historys[i].values())[2])val_loss.append(np.sum(list(historys[i].values())[2])/5)plt.title("val_loss")
plt.show()  
print(val_loss)
print("平均值val_loss:",sum(val_loss)/5)

[0.32521084280269486, 0.40465637274256777, 0.49552535546081405, 0.9327450055751416, 1.1576837492657068]
平均值val_loss: 0.663164265169385
在这里插入图片描述

val_acc=[]
for i in range(5):plt.subplot(1,5,i+1)plt.plot(list(range(1,6)),list(historys[i].values())[3])val_acc.append(np.sum(list(historys[i].values())[3])/5)plt.title("val_acc")
plt.show()  
print(val_acc)
print("平均值val_acc:",sum(val_acc)/5)

[0.9402713775634766, 0.9435285568237305, 0.9429286003112793, 0.9443714141845703, 0.9401143074035645]
平均值val_acc: 0.9422428512573242
在这里插入图片描述
结合每个模型在测试集的loss和acc表现 选择最接近均值的模型

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

简述k折交叉验证法

1、以二分类任务为例,假定数据集D包含1000个样本,将其划分为训练集S和测试集T,其中S包含800个样本, T包含200个样本,用S进行训练后,如果模型在T上有50个样本分类错误,那么模型的正确率为75% 。 …

root 密码破解(rd.break)

在Linux系统中,忘记root密码时,可以用此方法进行暴力修改root密码 示例: 设置一个新的记不住的密码 $ echo cnakdnvf | passwd --stdin root $ poweroff 1.启动此虚拟机,选中以下行,并按 【 e 】进入内核编辑页面 …

k折交叉验证

一般情况将K折交叉验证用于模型调优,找到使得模型泛化性能最优的超参值。,找到后,在全部训练集上重新训练模型,并使用独立测试集对模型性能做出最终评价。 K折交叉验证使用了无重复抽样技术的好处:每次迭代过程中每个样…

Python连接达梦数据库

python如果想连接达梦数据库,必须要安装dmPython。 简介:dmPython 是 DM 提供的依据 Python DB API version 2.0 中 API 使用规定而开发的数据库访问接口。dmPython 实现这些 API,使 Python 应用程序能够对 DM 数据库进行访问。 dmPython 通…

Jenkins+Python自动化测试之持续集成详细教程

前言 今天呢笔者想和大家来聊聊JenkinsPython自动化测试持续集成,废话呢就不多说了哟咱们直接进入主题哟。 一、Jenkins安装 ​ Jenkins是一个开源的软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供…

C++ 常用算数生成算法

&#x1f914;常用算数生成算法&#xff1a; 该算法函数需要调用<numeric>头文件 1.accumulate 计算总和 在 C STL 中&#xff0c;accumulate() 是一种常用的算法&#xff0c;用于计算指定范围内的元素之和。 accumulate() 的函数原型为&#xff1a; template<c…

Windows的Powershell终端增强

Ubuntu上一直用的Oh My Zsh强化终端&#xff0c;体验非常nice。最近在Win上做东西比较多&#xff0c;于是也想把Powershell这个简陋的终端加强一下。 说干就干&#xff0c;网上查了一圈&#xff0c;发现大部分人用Oh My Posh来操作&#xff0c;因此试了一下&#xff0c;发现卡…

python图像处理实战(一)—图像基础

&#x1f680;写在前面&#x1f680; &#x1f58a;个人主页&#xff1a;https://blog.csdn.net/m0_52051577?typeblog &#x1f381;欢迎各位大佬支持点赞收藏&#xff0c;三连必回&#xff01;&#xff01; &#x1f508;本人新开系列专栏—python图像处理 ❀愿每一个骤雨初…

MYSQL语句。

一些常用的操作内容&#xff0c;非常重要。首先从数据的增删改查谈起。 #增加一条数据 INSERT INTO studentdb.book(name, maker, price, num, time, autor) VALUES (Sping, 中国邮政, 500元, 456, 2021/11/30, spingsping) #查询表单结构 DESC book #查询表的内容 SELECT * FR…

MySQL语句的使用

目录 一&#xff0c;基本的增删改查 二&#xff0c;案例演示 三&#xff0c;排序拓展 1.拓展一 2. 拓展二 一&#xff0c;基本的增删改查 &#xff08;SQLServer与PLSQL的语句基本一致&#xff09; 提示&#xff1a;但是"" 在MySQL里面加号不做拼接&#xff0c…

chatgpt赋能python:Python中浮点数的定义

Python中浮点数的定义 什么是浮点数&#xff1f; 在计算机科学中&#xff0c;浮点数&#xff08;floating-point number&#xff09;是一种用于表示实数的近似值的数值类型。Python中的浮点数是由整数部分和小数部分组成的&#xff0c;可以使用小数点来表示。例如&#xff0c…

高级MySQL语句

高级MySQL语句 一、高级SQL语句 1、SELECT ----显示表格中一个或数个栏位的所有资料2、DISTINCT ----不显示重复的资料3、WHERE ----有条件查询4、AND OR ----且 或5、IN ----显示已知的值的资料6、BETWEEN ----显示两个值范围内的资料7、通配符 ----通常通配符都是跟 LIKE 一起…

MySQL语句优化

MySQL语句优化 1.通过EXPLAIN分析低效SQL的执行计划2.使用索引&#xff08;其下测试效率通过查询结果的type列的值进行评判&#xff09;1&#xff09;对于创建的多列索引&#xff0c;只要查询的条件中用到了最左边的列&#xff0c;索引一般就会被使用&#xff0c; 举例说明如下…

Mysql语句

查询 select 查询显示的列表 from 表名 select类似于&#xff1a; system.out.print(查询显示的列表), 特点: 1.查询列表可以是: 表中的字段,常量值,函数,表达式 2.查询出的表格是虚拟的表格(临时表格) 一基础查询 1.查询表中单个字段 date #1.查询表中单个字段 select us…

Mysql基本语句

1、数据库的基本类型 1.关系数据库 特点&#xff1a;以表和表的关联构成的数据结构 优点&#xff1a;能表达复杂的数据关系。强大的查询语言&#xff0c;能精确查找想要的数据 缺点&#xff1a;读写性能比较差&#xff0c;尤其是海量数据的读写。数据结构比较死板 用途&am…

MySQL的基本语句

目录 1.什么是数据库 2.数据库的操作 2.1.显示数据库 2.2.创建数据库 2.3.使用数据库 2.4.删除数据库 3.数据类型 3.1数值类型 3.2字符串类型 3.3日期类型 4.表的操作 4.1创建表 4.2往表中增加信息 5.删除表 1.什么是数据库 数据库大体可以分为关系型数据库和非关系…

MySQL 操作语句大全(详细)

sql语句总结 总结内容1. 基本概念2. SQL列的常用类型3. DDL简单操作3.1 数据库操作3.2 表操作 4. DML操作4.1 修改操作&#xff08;UPDATE SET&#xff09;4.2 插入操作&#xff08;INSERT INTO VALUE&#xff09;4.3 删除操作&#xff08;DELETE&#xff09; 5. DQL操作被操作…

14:00面试,14:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到5月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%,…

Chrome观看高分辨率60fps视频卡顿、丢帧问题的 问题记录

朋友的一台笔记本观看YouTube和哔哩哔哩的高分辨率视频卡成PPT 系统 是 win10企业版LTSC 版本号1809&#xff0c;使用的是Chrome浏览器 配置是i58250UhHD620,观看油管4k以上视频满负荷 安装WIN10的V9解码器. 安装V9解码器还是很卡顿&#xff0c;后来发现是谷歌浏览器的硬件加速…

酷睿i5 8250u相当于什么水平 i58250u属于什么级别

i5 8250u是笔记本处理器&#xff0c;制程工艺14nm&#xff0c;拥有4核心&#xff0c;8线程&#xff0c;cpu主频1.6GHz&#xff0c;睿频3.4GHz&#xff0c;三级缓存6MB&#xff0c;集成HD620显卡&#xff0c;显卡频率300MHz&#xff0c;最大动态频率1.1GHz&#xff0c;BGA插槽13…