网站建设商务代表工作总结,教育直播平台网站建设费用,合肥教育平台网站建设,邯郸网络教研中心二#xff1a;交叉验证
在 K 折验证之前最常用的验证方法就是交叉验证#xff0c;即把数据划分为训练集、验证集和测试集。一般的划分比例为 7#xff1a;1#xff1a;2。但如何合理的抽取样本就成为了使用交叉验证的难点#xff0c;不同的抽取方法会导致截然不同的训练性…
二交叉验证
在 K 折验证之前最常用的验证方法就是交叉验证即把数据划分为训练集、验证集和测试集。一般的划分比例为 712。但如何合理的抽取样本就成为了使用交叉验证的难点不同的抽取方法会导致截然不同的训练性能。同时由于验证机和训练集是不参与训练的导致大量的数据无法应用于学习所以显而易见的会导致训练的效果下降。 二K 折交叉验证
将训练集数据划分为 K 部分利用其中的 K-1 份做为训练剩余的一份作为测试最后取平均测试误差做为泛化误差。这样做的好处是训练集的所有样本都必然会成为训练数据同时页必然有机会成为一次测试集。可以更好的利用训练集数据。
K 越大平均误差被视为泛化误差这个结果就越可靠但相应的所花费的时间也是线性增长的。 上图 中 划分测试、训练、验证的时候 平均分成10份 7份训练 1份验证 2份测试 。
按照顺序循环成一个圈 代码如下 import os
import shutil
import numpy as np#文件地址
postfix jpg
imgpath D:\\dataset\\images
txtpath D:\\dataset\\txt# 创建存储交叉验证结果的基础目录
os.makedirs(cross_validation, exist_okTrue)# 获取文件列表并按文件名排序
listdir np.array(sorted([i for i in os.listdir(txtpath) if i.endswith(.txt)], keylambda x: int(x[:-4])))# 将文件列表等分为10份
folds np.array_split(listdir, 10)# 进行10次交叉验证
for fold in range(10):# 初始化训练、验证、测试集索引train_indices []val_indices []test_indices []# 训练集索引for i in range(7):index (fold i) % 10train_indices.extend(folds[index])# 验证集索引val_index (fold 7) % 10val_indices.extend(folds[val_index])# 测试集索引test_indices.extend(folds[(fold 8) % 10])test_indices.extend(folds[(fold 9) % 10])# 打印每次折的训练集、验证集和测试集的大小print(fFold {fold 1}:)print(f Train set size: {len(train_indices)})print(f Validation set size: {len(val_indices)})print(f Test set size: {len(test_indices)})# 为当前折创建目录fold_dir fcross_validation/fold_{fold 1}os.makedirs(f{fold_dir}/images/train, exist_okTrue)os.makedirs(f{fold_dir}/images/val, exist_okTrue)os.makedirs(f{fold_dir}/images/test, exist_okTrue)os.makedirs(f{fold_dir}/labels/train, exist_okTrue)os.makedirs(f{fold_dir}/labels/val, exist_okTrue)os.makedirs(f{fold_dir}/labels/test, exist_okTrue)# 将文件复制到当前折的训练、验证和测试目录中for i in train_indices:img_file f{imgpath}/{i[:-4]}.jpglbl_file f{txtpath}/{i}shutil.copy(img_file, f{fold_dir}/images/train/{i[:-4]}.jpg)shutil.copy(lbl_file, f{fold_dir}/labels/train/{i})for i in val_indices:img_file f{imgpath}/{i[:-4]}.jpglbl_file f{txtpath}/{i}shutil.copy(img_file, f{fold_dir}/images/val/{i[:-4]}.jpg)shutil.copy(lbl_file, f{fold_dir}/labels/val/{i})for i in test_indices:img_file f{imgpath}/{i[:-4]}.jpglbl_file f{txtpath}/{i}shutil.copy(img_file, f{fold_dir}/images/test/{i[:-4]}.jpg)shutil.copy(lbl_file, f{fold_dir}/labels/test/{i})images和txt文件夹下存放文件没有任何子文件夹