import os
import random
from shutil import copy2def data_set_split(src_data_folder, target_data_folder, train_scale=0.8, val_scale=0.1, test_scale=0.1):'''读取源数据文件夹,生成划分好的文件夹,分为trian、val、test三个文件夹进行:param src_data_folder: 源文件夹:param target_data_folder: 目标文件夹 :param train_scale: 训练集比例:param val_scale: 验证集比例:param test_scale: 测试集比例:return:生成三个文件夹:train val test 每个文件夹下两类 ct-covid ct-noncovid'''print("开始数据集划分")class_names = os.listdir(src_data_folder)# 在目标目录下创建文件夹split_names = ['train', 'val', 'test']for split_name in split_names:split_path = os.path.join(target_data_folder, split_name)if os.path.isdir(split_path):passelse:os.mkdir(split_path)# 然后在split_path的目录下创建类别文件夹for class_name in class_names:class_split_path = os.path.join(split_path, class_name)if os.path.isdir(class_split_path):passelse:os.mkdir(class_split_path)# 按照比例划分数据集,并进行数据图片的复制# 首先进行分类遍历for class_name in class_names:current_class_data_path = os.path.join(src_data_folder, class_name)current_all_data = os.listdir(current_class_data_path)current_data_length = len(current_all_data)current_data_index_list = list(range(current_data_length))random.shuffle(current_data_index_list)train_folder = os.path.join(os.path.join(target_data_folder, 'train'), class_name)val_folder = os.path.join(os.path.join(target_data_folder, 'val'), class_name)test_folder = os.path.join(os.path.join(target_data_folder, 'test'), class_name)train_stop_flag = current_data_length * train_scaleval_stop_flag = current_data_length * (train_scale + val_scale)current_idx = 0train_num = 0val_num = 0test_num = 0for i in current_data_index_list:src_img_path = os.path.join(current_class_data_path, current_all_data[i])if current_idx <= train_stop_flag:copy2(src_img_path, train_folder)# print("{}复制到了{}".format(src_img_path, train_folder))train_num = train_num + 1elif (current_idx > train_stop_flag) and (current_idx <= val_stop_flag):copy2(src_img_path, val_folder)# print("{}复制到了{}".format(src_img_path, val_folder))val_num = val_num + 1else:copy2(src_img_path, test_folder)# print("{}复制到了{}".format(src_img_path, test_folder))test_num = test_num + 1current_idx = current_idx + 1print("*********************************{}*************************************".format(class_name))print("{}类按照{}:{}:{}的比例划分完成,一共{}张图片".format(class_name, train_scale, val_scale, test_scale, current_data_length))print("训练集{}:{}张".format(train_folder, train_num))print("验证集{}:{}张".format(val_folder, val_num))print("测试集{}:{}张".format(test_folder, test_num))if __name__ == '__main__':src_data_folder = "D:/covid/dataset/src_data"target_data_folder = "D:/covid/dataset/target_data"data_set_split(src_data_folder, target_data_folder)

数据集切分(训练,验证,测试)相关推荐

  1. python划分数据集用pandas_用pandas划分数据集实现训练集和测试集

    1.使用model_select子模块中的train_test_split函数进行划分 数据:使用kaggle上Titanic数据集 划分方法:随机划分 # 导入pandas模块,sklearn中mo ...

  2. 机器学习 训练验证测试_测试前验证| 机器学习

    机器学习 训练验证测试 In my previous article, we have discussed about the need to train and test our model and ...

  3. 将数据集分为训练集和测试集(python脚本)

    文章目录 程序: 下面简单介绍一下程序流程 1.引入库 os库 shutil random 2.mk_file函数 3.主函数 程序: 我们在训练卷积神经网络之前,要搭建好数据集,分成训练集和测试集两 ...

  4. FCN制作自己的数据集、训练和测试 caffe

    原文:http://blog.csdn.net/zoro_lov3/article/details/74550735 FCN制作自己的数据集.训练和测试全流程 花了两三周的时间,在导师的催促下,把FC ...

  5. ML之FE:在模型训练中,仅需两行代码实现切分训练集和测试集并分离特征与标签

    ML之FE:在模型训练中,仅需两行代码实现切分训练集和测试集并分离特征与标签 目录 仅需两行代码实现切分训练集和测试集并分离特征与标签 输出结果 实习代码 仅需两行代码实现切分训练集和测试集并分离特征 ...

  6. [Python+sklearn] 拆分数据集为训练和测试子集 sklearn.model_selection.train_test_split()

    Python - sklearn 拆分数据集为训练和测试子集 sklearn.model_selection.train_test_split() 功能: 将数组或矩阵拆分为随机的训练子集和测试子集 ...

  7. 学习weka(2):weka软件使用实例:针对kdd99数据集进行训练和测试

    前言 kdd99 数据集之前介绍过,没有看的可以参考:KDD CUP99数据集预处理(Python实现) 这里拿 kdd99 数据集练练手,主要目的是熟悉一下 weka 的使用. 1.数据集准备 使用 ...

  8. 机器学习之数据集划分——训练集测试集划分,划分函数,估计器的使用

    训练集测试集划分,划分函数,估计器的使用 参考文章 训练集.验证集和测试集的划分及交叉验证的讲解 划分训练集和测试集的函数学习 sklearn数据集,数据集划分,估计器详细讲解 参考文章 训练集.验证 ...

  9. 【Pytorch】MNIST数据集的训练和测试

    训练和测试的完整代码: import torch import torch.nn as nn import torch.nn.functional as F from torchvision impo ...

  10. 7个Bert变种模型baseline在7个文本分类数据集上训练和测试

    引入和代码项目简介 https://github.com/songyingxin/Bert-TextClassification 模型有哪些? 使用的模型有下面七个 BertOrigin, BertC ...

最新文章

  1. 20分钟学会CMake
  2. 如何附加被分离的质疑数据库?
  3. VC中使用Unicode的一些列问题
  4. linux命令录制,怎样在Linux上录制你的终端操作及回放
  5. python 新闻摘要_每日新闻摘要:Microsoft内部禁止应用程序,这样就可以了
  6. 机器人搏击大赛冠军_机器人的江湖 谁主沉浮——2017格斗机器人大赛侧记
  7. HUST 1353 Dartboard
  8. java 英语_Java常用英语汇总(更新升级版)
  9. 【嵌入式】7段数码管电路原理
  10. PCL教程-使用CloudViewer类实现简单点云可视化
  11. 头号玩家VR跑步机KAT Walk Mini上市,支持各种主流VR头显
  12. idou老师教你学Istio: 如何用Istio实现K8S Egress流量管理
  13. 【图像超分辨率重建】——HAN论文精读笔记
  14. 新华三杯复赛实验赛题解析MSTP和VRRP部署+QoS部署
  15. win2K3安装sql2000提示“安装程序配置服务器失败”的常见解决办法
  16. C语言求边长500以内的毕达哥拉斯三元组的个数
  17. 2021-IP地址详解02
  18. 将yyyyMMdd格式化为yyyy-MM-dd日期格式及DateFormateUtils、DateUtils的使用
  19. xilinx的DDR IP中的自刷新功能
  20. 【BZOJ3131】淘金(SDOI2013)-数位DP+优先队列

热门文章

  1. 是真烧机油还是正常磨损
  2. 深度之眼论文学习方法
  3. HTTP 2.0 与HTTP1.1的差别
  4. 婴舒宝微商系统搭建(PHP语言)
  5. 惊叹!显微镜下的人体图片:当卵子遇上精子
  6. 四国军棋引擎开发(8)主要变例提取
  7. Linux装docker + rancher
  8. 半导体激光器发光原理及工作原理
  9. python抓取网站访客手机号_想获得网站访问者的联系方式吗,这篇文章全讲透了...
  10. c# Winform中menuStrip控件中ToolStripMenuItem排序说明