代码实现将数据集按比例分成训练集和验证集

it2026-02-19  6

一开始的文件结构:

----train |---A |---1.jpg |---2.jpg |---3.jpg ... |---100.jpg |---B |---1.jpg |---2.jpg |---3.jpg ... |---100.jpg

运行代码后的文件结构:

----train |---A |---1.jpg |---9.jpg |---10.jpg ... |---100.jpg |---B |---2.jpg |---11.jpg |---20.jpg ... |---89.jpg ----val |---A |---2.jpg |---5.jpg |---6.jpg ... |---90.jpg |---B |---1.jpg |---3.jpg |---5.jpg ... |---100.jpg # coding=utf-8 import os, random, shutil def moveFile(fileDir): pathDir = os.listdir(fileDir) # 取图片的原始路径 filenumber = len(pathDir) picknumber = int(filenumber * ratio) # 按照rate比例从文件夹中取一定数量图片 sample = random.sample(pathDir, picknumber) # 随机选取picknumber数量的样本图片 for name in sample: shutil.move(os.path.join(fileDir, name), os.path.join(tarDir, name)) return if __name__ == '__main__': ori_path = r'/home/ubuntu/ZQQ/HuaLuBei/data/train' # 最开始train的文件夹路径 split_Dir = r'/home/ubuntu/ZQQ/HuaLuBei/data/val' # 移动到新的文件夹路径 ratio = 0.2 # 抽取比例 for firstPath in os.listdir(ori_path): fileDir = os.path.join(ori_path, firstPath) # 原图片文件夹路径 tarDir = os.path.join(split_Dir, firstPath) # val下子文件夹名字 if not os.path.exists(tarDir): # 如果val下没有子文件夹,就创建 os.makedirs(tarDir) moveFile(fileDir) # 从每个子类别开始逐个划分

参考: https://blog.csdn.net/u010420283/article/details/90142480

https://blog.csdn.net/xuru_0927/article/details/89190408

最新回复(0)