Python 处理图像分类数据集之训练集、测试集分离(随机)

随机森林划分训练集与测试集(随机划分、自定义划分)-Python实现 本部分是根据需求 自定义人为划分训练集和测试集,随机划分样本可见上一篇博客。 如有错误之处,欢迎批评指正~ 因为是人为规定哪些样本是训练集,哪些样本是测试集,因此训练集和测试集不是随机的,是我们已知的。因此我将训练集和测试集分别放置在两个CSV文档中。 下图是训练集的部分原始数据。第一列是图像编号,中间列是图像特征,最后一列是图像的实际分类结果。(80张图像) 下图是测试集的部分原始数据:(20张图像) 实际运行过程中可以提前将number列也就是图像编号列给删去,这里为了方便大家理解,就不删除啦~~ 代 阅读详情

版权声明:本文为优快云博主「查无此人☞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/hb_learing/article/details/115466277

加使用博主的方法确实可以得到划分结果,转载保存下

本文代码可推广到其他数据集上,也可以推广到您想划分训练集、验证集、测试集上,下面以自己的数据集和划分训练集、测试集为例!
本段代码的功能是以一定的比例来划分数据集为测试集、训练集,且在不改变原数据集的情况下把属于每一个类别的训练集和测试集图片copy到另外两个文件夹train、test下:
在这里插入图片描述

只需给出上图文件夹所在绝对路径、训练集和测试集的划分比例即可:

import os
import random
import shutil
import csv
import numpy as np
def CopyFile(imageDir,test_rate,save_test_dir,save_train_dir):#三个参数,第一个为每个类别的所有图像在计算机中的位置
    #第二个为copy的图片数目所占总的比例,最后一个为移动的图片保存的位置,
    image_number = len(imageDir)  #图片总数目
    test_number = int(image_number * test_rate)#要移动的图片数目
    print("要移动到%s目录下的图片数目为:%d"%(save_test_dir,test_number))
    test_samples = random.sample(imageDir, test_number)#随机截取列表imageDir中数目为test_number的元素
 # copy图像到目标文件夹
    if not os.path.exists(save_test_dir):
        os.makedirs(save_test_dir)
        print("save_test_dir has been created successfully!")
    else:
        print("save_test_dir already exited!")
    if not os.path.exists(save_train_dir):
        os.makedirs(save_train_dir)
        print("save_train_dir has been created successfully!")
    else:
        print("save_train_dir already exited!")
    for i,j in enumerate(test_samples):
        shutil.copy(test_samples[i], save_test_dir+test_samples[i].split("/")[-1])
    print("tets移动完成!")
    for train_imgs in imageDir:
        if train_imgs not in test_samples:
            shutil.copy(train_imgs, save_train_dir+train_imgs.split("/")[-1])
    print("train移动完成")
#只需给定file_path、test_rate即可完成整个任务
#原始路径+分割比例
################################
# file_path="E:\\数据\\images"
file_path="E:/Master's period/Gesture dataset/UJN_TEST_Gesture/hand gesture"
test_rate = 0.2
################################
file_dirs=os.listdir(file_path)
origion_paths=[]
save_test_dirs=[]
save_train_dirs=[]
for path in file_dirs:
   origion_paths.append(file_path+"/"+path+"/")
   save_train_dirs.append("E:/Master's period/Gesture dataset/UJN_TEST_Gesture/train/"+path+"/")
   save_test_dirs.append("E:/Master's period/Gesture dataset/UJN_TEST_Gesture/test/"+path+"/")
for i,origion_path in enumerate(origion_paths):
    image_list = os.listdir(origion_path) #获得原始路径下的所有图片的name(默认路径下都是图片)
    image_Dir=[]
    for x,y in enumerate(image_list):
        image_Dir.append (os.path.join(origion_path, y))
    print("%s目录下共有%d张图片!"%(origion_path,len(image_Dir)))
    CopyFile(image_Dir,test_rate,save_test_dirs[i],save_train_dirs[i])
print("all datas has been moved successfully!")


结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为什么这样做呢?因为有时候跑论文用到ImageFolder、DataLoader类,会直接从train、test文件夹下读取图片!是为了满足数据集能被直接加载的要求!
详细可加:https://blog.youkuaiyun.com/hb_learing/article/details/115455269在这篇论文复现过程中,就对数据集的格式提出了要求!哈哈,CUB200数据集也是同样的操作方法,可以用CUB200数据集检验哦。

因为是按照8:2的比例划分的,我怕测试集的数目比训练集还多,加入了如下的代码来统计下训练集、测试集、总的数据集的数目:

测试集:

#统计测试集数目
import os
path="D:\\数据\\216_2021\\test"
sum_test=0
dirs=os.listdir(path)
for Dir in dirs:
    new_dir=os.path.join(path,Dir)
    images=os.listdir(new_dir)
    sum_test+=len(images)
print("测试集:{:}".format(sum_test))

训练集:

#统计训练集数目
import os
path="D:\\数据\\216_2021\\train"
sum_train=0
dirs=os.listdir(path)
for Dir in dirs:
    new_dir=os.path.join(path,Dir)
    images=os.listdir(new_dir)
    sum_train+=len(images)
print("训练集:{:}".format(sum_train))

总:

#统计总数目数目
import os
path="D:\\数据\\216_2021\\images"
sum=0
dirs=os.listdir(path)
for Dir in dirs:
    new_dir=os.path.join(path,Dir)
    images=os.listdir(new_dir)
    sum+=len(images)
print("总数:{:}".format(sum))

pyskl训练自己的数据集 建了之后就把视频放在里面,这里是2:7的比例,测试占十分之2,训练视频九分之7。意思是一个类里面有九个视频,两个测试,7个训练。2.类别标签,意思就是视频的名称,比如moshe_0.avi,这里就不要改了。5.生成最终的pkl文件,这里参考磨墨的教程就可以了(pycharm上面运行)如果是训练stgcnn++的,可以参考墨末的训练代码,这个有最好的pth文件。运行的时候前面有很多代码警告,不用担心,等等看,看看最后有没有出现。注意:要竖着列,就按我这个列好吗,要不然就又出问题了,先听我的。 阅读详情

相关推荐

【Python】深度学习中将数据按比例随机分成随机 训练集 和 测试集的python脚本

深度学习中经常将数据分成 训练集 和 测试集,参考博客,修改python脚本 randPickAITrainTestData.py 。 功能:从 输入目录 中随机检出一定比例的文件或目录,移动到保存 测试集目录 中,原输入目录作为训练目录。 import os, random, shutil import sys, getopt import string def getDir(argv): ...

郭老二 5517

机器学习(九) 自定义数据集

文章目录前言1 猫狗数据集2 自定义数据加载2.1 创建编码表2.2 创建样本和标签表格2.3 数据集划分3 PyTorch实现自定义数据集 前言   我们知道,现在会很多框架中都有集成数据集的库,我们可以通过几行简单的代码进行下载,如我们前几篇博客中的 MNIST 手写数字集和 Fashion MNIST数据集均可以通过PyTorch中的torchvision库下载。但库中收集到的数据集始终有限,我们则需要利用爬虫等技术进行收集新数据集,如果要用于模型训练,则需要我们自定义数据集。 1 猫狗数据集   猫

weixin_53598445的博客 5003

从零搭建A股量化交易系统:开源框架选型与实战部署指南

本文详细介绍了从零搭建A股量化交易系统的完整流程,重点分析了开源框架VNPY和QMT的选型与实战部署。内容涵盖系统架构设计、策略开发、性能优化及实盘过渡方案,为开发者提供了一套完整的A股实盘量化交易解决方案,助力高效构建稳定可靠的量化交易系统。

sugar的博客 1270

NNDL 实验六 卷积神经网络(5)使用预训练resnet18实现CIFAR-10分类

CIFAR-10数据集包含了10种不同的类别、共60,000张图像,其中每个类别的图像都是6000张,图像大小均为32×32像素。CIFAR-10数据集的示例如图所示。迁移学习,顾名思义,就是要进行迁移。放到人工智能和机器学习的学科里,迁移学习是一种学习的思想和模式。首先机器学习是人工智能的一大类重要方法,也是目前发展最迅速、效果最显著的方法。机器学习解决的是让机器自主地从数据中获取知识,从而应用于新的问题中。迁移学习作为机器学习的一个重要分支,侧重于将已经学习过的知识迁移应用于新的问题中。

m0_56164577的博客 1800

【学习笔记-QGIS】 QGIS从零快速上手

安装文章参考:https://zhuanlan.zhihu.com/p/370633306。

Xcong_Zhu的博客 1万+

国外无人机蜂群作战典型战例及发展趋势

参与袭击的无人机为简易组装的固定翼飞机,采用小排量活塞发动机和手机GPS通信模块零件,机翼为轻木加泡沫板混合结构,尾梁为铝合金方管,主要依靠胶带粘接,以上全部配件均可在商用市场买到,成本较低,可在短时间内装配完成。③战场纵深短、瞬时性强。蜂群作战的参战数量显著增加,这一方面得益于无人机技术的飞速发展使得廉价无人机可以大量生产和仿制,另一方面凭借迅速发展的投放和回收技术以及集群控制技术,使得无人机蜂群可在极短时间内实现编队饱和攻击,在快速消耗敌方高价值防空武器系统的同时,保证己方物资系统的突防概率。

renhongxia1的博客 2478

CUB200-2011鸟类细粒度数据集训练集和测试集划分python代码

CUB200-2011数据集介绍: 该数据集由加州理工学院再2010年提出的细粒度数据集,也是目前细粒度分类识别研究的基准图像数据集。 该数据集共有11788张鸟类图像,包含200类鸟类子类,其中训练数据集有5994张图像,测试集有5794张图像,每张图像均提供了图像类标记信息,图像中鸟的bounding box,鸟的关键part信息,以及鸟类的属性信息,数据...

CV-小生的博客 3万+

MIT Bevfusion环境安装 Docker方式,nuscenes数据处理

Bevfusion环境安装,数据生成报错解决module 'numpy' has no attribute 'long';most likely due to a circular import。bevfusion docker环境

Jack_Man_N的博客 1143

Python划分图像文件夹为训练集、验证集和测试集——split-folders

深度学习图像分类常需要将数据集分为训练集(train)、验证集(validation)和测试集(test),而 TensorFlow 没有提供相关函数(准确来说是很难用),使用 split-folders可轻松实现。

XerCis的博客 1万+

Python 神经计算实训 实训答案分享

【代码】Python 神经计算实训 实训答案分享。

2403_89314916的博客 343

MIPI C-PHY介绍(Specification for C-PHY V1.2)

本文档描述了一个名为C-PHY的高速串行接口,它在带宽有限(bandwidth limited channels,看的有人说C的含义就是channel limit)的通道上提供高吞吐量性能,用于连接到外设,包括显示器和摄像头。首先0x4fff在0x4000~0x4fff区域,则f=(0,0,0,0,0,0,1),顺序是S6~S1;最后,端到端的传输过程是什么样呢,如下图所示,16bit先转换成7个符号(每个符号3位,共21位),然后并行数据转换成串行数据,输送到符号编码器和3个线的驱动器,接收端流程相反。

qflook的博客 5870

下载数据集用于图像分类并自动分为训练集和测试集方法

因此,这里以下载花分类数据集为例,并使用python程序,自动将数据集分为训练集和测试集,原理是通用的,我们可以用此方法,制作我们自己的数据集,并自动将其分类。而图像处理的前期工作就是获取大量的数据集,用于训练模型参数,以准确识别或分类我们的目标图像。这一步一定要注意文件夹的层级结构,删除多余的文件,包括压缩文件,不然执行第4步脚步时容易报错。至此,数据集中的10%被复制到val文件夹下,90%被复制到train文件夹下,完美!我们可以根据这个框架,进行适当修改,将自己的数据集自动分为训练集和测试集。

Time_Memory_cici的博客 1274

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

数据集划分,Oxford Flower102花卉分类数据集,分为训练集、测试集、验证集

数据集划分,Oxford Flower102花卉分类数据集,分为训练集、测试集 Oxford Flower102数据集链接:https://www.robots.ox.ac.uk/~vgg/data/flowers/102/ 参考:https://www.jianshu.com/p/71d4a8c1b68b 1、Flower102鲜花分类数据集概览及下载 下载上图的145,1解压后可得到一个包含8189张.jpg格式的图片(放在jpg文件夹中)以及imagelabels.mat和setid.mat。 数

weixin_44031582的博客 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[python]将图片按比例分在多个文件夹(7:3分成训练集和测试集)

先看看原数据集: 第一层 第二层 其他类似~ 再看看修改后数据集: 第一层: 第二层: 第三层: test类似,这里不做展示-_- 然后上代码 # -*- coding: utf-8 -*- """ Created on Mon May 25 23:31:16 2020 @author: 吴 """ #代码没什么地方难理解的,没看懂建议多print参数看看 import os import random import shutil from shutil import copy2 categ

乾巽的博客 5210

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

深度学习pytorch实战五:基于ResNet34迁移学习的方法图像分类篇自建花数据集图像分类(5类)超详细代码

1.数据集简介 2.模型相关知识 3.split_data.py——训练集与测试集划分 4.model.py——定义ResNet34网络模型 5.train.py——加载数据集并训练,训练集计算损失值loss,测试集计算accuracy,保存训练好的网络参数 6.predict.py——利用训练好的网络参数后,用自己找的图像进行分类测试

qq_55433305的博客 7253

一、构建自己的图像分类数据集(Datawhale组队学习)

本篇文章主要讲述了构建自己图像分类数据集的步骤以及常见的问题。首先数据集的来源可以是从网上爬取的、自己拍照得到的、网上现成的数据集。对于我们得到的数据集我们可以利用Shell命令进行简单的清洗,包括删除系统自动生成的文件、gif格式图片、非三通道图片等,熟悉Linux操作可以帮助我们更好的清洗我们的数据。之后我们可以对我们的数据集进行划分、统计、可视化。

小刘的博客 4532

利用程序对已有的大量数据集自动分类成训练集和测试集。

利用程序对已有的大量数据集自动分类成训练集和测试集

qq_41909873的博客 2901

利用python将数据集分为train_data和test_data

在图像分类时将收集到的分类好的数据进行随机打乱按比例生成训练集和测试集下面是代码 import os import random import shutil def data_random_split(current_dir,ratio_train): ''' 将当前文件夹中文件按一定比例分成train和test连个列表,列表存放文件名 ''' data_li...

wakaka1226的博客 9182

Pytorch最简单的图像分类——K折交叉验证处理小型鸟类数据集分类

Pytorch图像分类从零开始——小型数据集鸟的分类问题 你好! 本篇博客主要是针对基于Pytorch深度学习刚入门的朋友,本文基于六种鸟类的分类问题,以小数据集为例,带领读者从总体上了解一个从零开始的图像分类问题,陆续会写一些具体的问题,如本人在跑这个小项目中遇到的所有问题以及解决方法,重点在于带领读者掌握图像分类这一基本问题中数据集的分割、读取、封装的基本思想,接着会详细的介绍构建的模型,以及针对小数据集而使用的k折交叉验证的方法,还有使用到的网络,损失函数,优化器,等涉及到图像分类问题的所有的基本内容

hb_learing的博客 1万+

[python]随机按照比例划分图像数据集为训练集和测试集

我的根目录是Images,其中TigerHead是类别名,下面的jpg是该目录的图片。

Learning from the mistakes 828

python对coco数据集的训练集和测试集划分

python对coco数据集的训练集和测试集划分 import os import random import shutil import time def copyFile(fileDir, origion_path1, class_name): name = class_name#按顺序读取到第一张照片名字 path = origion_path1#标签地址 image_list = os.listdir(fileDir) # 获取原始图片路径中的所有图片 im

m0_46364958的博客 4032

代码实现包括生成标签文件和处理训练集及测试集

该代码实现了一个图像分类数据集的标签文件生成工具,主要功能包括:1) 自动创建训练集和测试集的标签文件;2) 通过遍历目录结构建立图片路径与类别标签的映射关系;3) 按格式输出到文本文件。代码使用目录顺序自动分配标签(首个子目录为0,依此类推),支持跨平台路径处理,适用于多类别分类任务的数据预处理。生成的标签文件每行包含图片路径和对应数字标签,可直接用于机器学习模型训练。

2301_79749195的博客 2436

用python制作训练集和测试集的图片名列表文本

1 # -*- coding: utf-8 -*- 2 from pathlib import Path #从pathlib中导入Path 3 import os 4 import fileinput 5 import random 6 root_path='/home/tay/Videos/trash/垃圾分类项目/total/' 7 train = open(...

weixin_30770783的博客 595
上一篇: RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the
下一篇: 错误提示:enable anomaly detection to find the operation that failed to compute its gradient...
LoriaLi
博客等级 码龄8年 16粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值