python一个文件夹下,按比例随机选取图片训练集和测试集

        文字识别时候,大量图片.jpg还有配套的文本文档.txt人工进行筛选太麻烦,还有可能存在图片丢失文档的情况,这些问题可以用python代码简单搞定,还可以按照喜欢的比例分配训练集和测试集:yiyishang

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
#coco
import os
import random
import shutil

def movefile(filedir,tardir):
    pathdir=os.listdir(filedir)#取數據集的原始路徑
    filenumber=len(pathdir)
    rate=0.7#自定義抽取數據集的比例,比方説 1000張抽100張,那就是0.1
    picknumber=int(filenumber*rate)#按照rate比例從數據集中取一定數量文件
    #print('picknumber:',picknumber)
    samples=random.sample(pathdir,picknumber)#隨機選取picknumber數量的文件
    #print('samples:',samples)

    count=0#計數變量
    for sample in samples:#當前目錄下選取的數據
        print('sample:',sample)
        if sample.endswith(".jpg"):#查看選取的是否是jpg圖片
            shutil.move(filedir+sample,tardir+sample)
            shutil.move(filedir+os.path.splitext(sample)[0]+'.txt',tardir+os.path.splitext(sample)[0]+'.txt')
            count+=1
            #if(count/0.1>filenumber):#移動的圖片已經超過縂數據集的10%,跳出
                #break
    print('count:',count)
    return

if __name__ == "__main__":

    filedir ='F:/train_sum/'#源數據集文件夾路徑
    tardir = 'F:/selecttrain/'#移動到新的文件夾路徑
    movefile(filedir,tardir)

以上就是简单的数据集随机按照比例筛选的问题,简单易操作。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Python中,要将一个文件夹中的图片分成训练集和验证集,可以使用os和random模块来实现。 首先,我们需要使用os模块来获取文件夹中的所有图片文件的路径,并存储在一个列表中。可以使用os.listdir()函数来获取文件夹中的所有文件名,然后循环遍历这些文件名,使用os.path.join()函数来获取文件的完整路径。 接着,我们可以使用random模块中的shuffle()函数来打乱图片文件的顺序,以确保训练集和验证集的随机性。然后,根据需求,可以将打乱后的列表划分为训练集和验证集的两个子列表。 最后,我们可以使用shutil模块中的move()函数来将训练集和验证集中的图片文件移动到相应的文件夹中。首先,我们需要创建两个新的文件夹,分别用于存放训练集和验证集的图片文件。接着,可以使用os.makedirs()函数来创建文件夹,使用shutil.move()函数将图片文件从原始文件夹移动到新的文件夹中。 以下是一个示例代码: ``` import os import random import shutil # 原始图片文件夹路径 folder_path = '/path/to/folder/' # 获取文件夹中所有图片文件的路径 img_paths = [os.path.join(folder_path, file) for file in os.listdir(folder_path) if file.endswith('.jpg')] # 打乱图片文件的顺序 random.shuffle(img_paths) # 划分训练集和验证集 train_ratio = 0.8 # 训练集所占比例 train_size = int(len(img_paths) * train_ratio) train_img_paths = img_paths[:train_size] val_img_paths = img_paths[train_size:] # 创建训练集和验证集文件夹 train_folder = os.path.join(folder_path, 'train') val_folder = os.path.join(folder_path, 'val') os.makedirs(train_folder, exist_ok=True) os.makedirs(val_folder, exist_ok=True) # 将图片文件移动到训练文件夹中 for img_path in train_img_paths: shutil.move(img_path, train_folder) # 将图片文件移动到验证集文件夹中 for img_path in val_img_paths: shutil.move(img_path, val_folder) ``` 通过以上代码,我们可以将一个文件夹中的图片文件按照训练集和验证集的比例进行划分,并将其移动到相应的文件夹中,以供后续的机器学习或深度学习任务使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值