python按设定比例划分训练集和测试集代码

该博客介绍了如何使用Python进行图像数据集的划分,通过定义训练集比例,将原始数据集按比例划分为训练集和测试集。代码实现了从原始数据集读取图片,随机选取训练样本,然后复制到相应的训练和测试目录下,适用于机器学习和深度学习项目的数据预处理步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# *_*coding: utf-8 *_*
# Author --LiMing--

import os
import random
import shutil
import time

def copyFile(fileDir, class_name):
    image_list = os.listdir(fileDir) # 获取图片的原始路径
    image_number = len(image_list)

    train_number = int(image_number * train_rate)
    train_sample = random.sample(image_list, train_number) # 从image_list中随机获取0.8比例的图像.
    test_sample = list(set(image_list) - set(train_sample))
    sample = [train_sample, test_sample]

    # 复制图像到目标文件夹
    for k in range(len(save_dir)):
        if os.path.isdir(save_dir[k] + class_name):
            for name in sample[k]:
                shutil.copy(os.path.join(fileDir, name), os.path.join(save_dir[k] + class_name+'/', name))
        else:
            os.makedirs(save_dir[k] + class_name)
            for name in sample[k]:
                shutil.copy(os.path.join(fileDir, name), os.path.join(save_dir[k] + class_name+'/', name))

if __name__ == '__main__':
    time_start = time.time()

    # 原始数据集路径
    origion_path = '/home/room/lm_other/NWPU-RESISC45/'

    # 保存路径
    save_train_dir = '/home/room/lm_other/RS_45/2_8/train/'
    save_test_dir = '/home/room/lm_other/RS_45/2_8/test/'
    save_dir = [save_train_dir, save_test_dir]

    # 训练集比例
    train_rate = 0.2

    # 数据集类别及数量
    file_list = os.listdir(origion_path)
    num_classes = len(file_list)

    for i in range(num_classes):
        class_name = file_list[i]
        image_Dir = os.path.join(origion_path, class_name)
        copyFile(image_Dir, class_name)
        print('%s划分完毕!' % class_name)

    time_end = time.time()
    print('---------------')
    print('训练集和测试集划分共耗时%s!' % (time_end - time_start))

转载:https://www.cnblogs.com/rs-xiaosheng/p/12371709.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值