【DL】(数据)数据集的划分

【DL】(数据)数据集的划分

一、划分形式

数据集的划分工作是在模型训练之前就要完成的,我们得到的数据集大多都只放在一个文件夹中,标签存放在一个csv文件中,数据集的划分需要我们自己来完成,我们的目标是将一个文件夹中的所有图片,按照比例划分为训练集和验证集,在训练集和验证集中,每一个子文件夹的名称表示该子文件夹中图片的标签。
以下图二分类为例:(0表示负类,1表示正类)
在这里插入图片描述

二、思路:

1、读取csv文件,将里面所有图片的文件名存储在列表filename中,每个文件名对应的标签存储在列表label中。
2、先创建train, valid文件夹
3、对于train和valid,创建其子文件夹用来表示类别
4、对filename和label进行切分,得到表示训练集的train_img, train_lab和表示验证集的valid_img, valid_lab。
5、遍历train_img和valid_img, 对当前图片的标签进行判断,若为0,则添加到对应的train/valid中的0/1文件夹中。

三、代码

import os
import shutil
import pandas as pd
import numpy as np

# ====对数据的csv文件进行处理,将图片的文件名存入face_filename,标签存入face_label =======================================
data = pd.read_csv("D:\\Pytorch\\pythonProject\\Pycharm_scripts_torch\\xxx\\train.labels.csv")
data = data.iloc[:, 0]
data = np.array(data)
# print(data)
face_filename = []
face_label = []
for i in range(len(data)):
    face_filename.append(data[i].split("\t")[0])
    face_label.append(data[i].split("\t")[1])
# print(face_filename)
# print(face_label)
# ===================================================================================================================

base_dir = os.path.abspath(r"D:\Pytorch\pythonProject\Pycharm_scripts_torch\xxx\image\trainvalid")

# os.path.makedir  用来创建新的文件夹
def makedir(new_dir):
    if not os.path.exists(new_dir):
        os.makedirs(new_dir)

# 创建train、valid文件夹
makedir(r"D:\Pytorch\pythonProject\Pycharm_scripts_torch\xxx\image\train")
makedir(r"D:\Pytorch\pythonProject\Pycharm_scripts_torch\xxx\image\valid")
train_path = os.path.abspath(r"D:\Pytorch\pythonProject\Pycharm_scripts_torch\xxx\image\train")
valid_path = os.path.abspath(r"D:\Pytorch\pythonProject\Pycharm_scripts_torch\xxx\image\valid")

# 划分比例
train_percent = 0.9
valid_percent = 0.1

train_num = len(face_filename) * train_percent
valid_num = len(face_filename) * valid_percent

train_img = face_filename[:int(train_num)]            # 列表,存储训练集图片的文件名
train_lab = face_label[:int(train_num)]               # 列表,存储训练集图片的标签
valid_img = face_filename[int(train_num):]            # 列表,存储验证集图片的文件名
valid_lab = face_label[int(train_num):]               # 列表,存储验证集图片的标签

# 划分训练集
makedir(os.path.join(train_path, str(0)))    # 创建正类文件
makedir(os.path.join(train_path, str(1)))    # 创建负类文件

for i in range(len(train_img)):
    img_path = os.path.join(base_dir, train_img[i])
    img_label = train_lab[i]
    if img_label == '0':
        shutil.copy(img_path, os.path.join(train_path, str(0)))  # shutil.copy(a,b) 将a文件复制到b文件中,具体参数请查阅资料
    elif img_label == '1':
        shutil.copy(img_path, os.path.join(train_path, str(1)))

# 划分验证集
makedir(os.path.join(valid_path, str(0)))
makedir(os.path.join(valid_path, str(1)))

for i in range(len(valid_img)):
    img_path = os.path.join(base_dir, valid_img[i])
    img_label = valid_lab[i]
    if img_label == '0':
        shutil.copy(img_path, os.path.join(valid_path, str(0)))  
    elif img_label == '1':
        shutil.copy(img_path, os.path.join(valid_path, str(1)))

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值