训练集 验证集 测试集定义:
- 通常情况下,我们将模型下实际使用中遇到的数据成为测试集; 模型评估与选择中用于评估测试的数据集称为验证集;
例如:在研究对比不同算法的效果的性能时,我们使用测试机的判别效果来评估模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。
数据划分:
(1)验证集和测试集不同。
(2)验证集来自训练集的再划分。
(3)验证集的划分是为了模型选择和调参
(4)测试集是用来测试学习器对新样本的判别能力,用测试误差作为泛化误差的近似值。
数据集划分代码实现:
# 将图像数据重新切分,使其只包含表格,同时修改坐标。
import os
import cv2
import numpy as np
import json
def dict_slice(adict, start, end):
# 字典切片
keys = adict.keys()
dict_slice = {}
for k in list(keys)[start:end]:
dict_slice[k] = adict[k]
return dict_slice
train_folder = 'work/train_data'
train_path = 'work/train_data.txt'
test_folder = 'work/eval_data'
test_path = 'work/eval_data.txt'
# 切分一部分数据用于模型验证
if not os.path.exists(train_folder):
os.mkdir(train_folder)
if not os.path.exists(test_folder):
os.mkdir(test_folder)
train_file=open(train_path,mode='w')
test_file=open(test_path,mode='w')
scale = 0.8 # 切分比例
#读入的数据为上一个文件的table_all
train_file_img = dict_slice(table_all,0,int(scale*len(table_all))) #得到的是一个字典
print(type('train_file_img',train_file_img))
test_file_img = dict_slice(table_all,int(scale*len(table_all)),int(len(table_all)))