深度学习进行数据处理(划分测试集和训练集)

news2024/10/3 2:26:11

自己进行在深度学习时对数据的处理,希望可以帮助大家

文章目录

前言

一、观察数据格式

二、划分训练集和测试集

总结


前言

在进行图像分类时我们经常得到的数据集各种各样,接下来我教大家如划分测试集和训练集.

一、观察数据格式

我们一般获得的数据在一个文件夹里,文件夹里面又有各种类别的文件夹,每个文件里面有各自类别的图片.比如.

之后我们要想划分就需要知道你的数据集的图片格式是什么?这样才能更好的去认识数据集的情况方便以后操作.

import os
# 定义原始文件夹路径、目标文件夹路径和剩余文件夹路径
source_folder = 'path/to/source/folder'

img_classes = set()#定义一个名字集合
# 遍历原始文件夹中的每个文件夹
for folder_name in os.listdir(source_folder):
    if not os.path.isdir(os.path.join(source_folder, folder_name)):
        continue
    # 获取当前文件夹中所有图片的路径
    images = []
    for file_name in os.listdir(os.path.join(source_folder, folder_name)):
        split_result = file_name.split('.')#使用'.'分隔图片名称
        extension = split_result[-1]
        img_classes.add(extension)#加入集合

img_classes#返回图片格式

像这样的一个集合

如果你的图片的格式太多建议完全转化一下,尽量不要超过5个,当然全一样的最好,我们这样做是因为在大量数据的时候可能会发生几张图片格式不一致,为了后续操作提供便利.

二、划分训练集和测试集

假设我们现在的要求是将每个分类样本都抽取30张图片放入测试集文件夹,剩余的文件放入训练集的文件夹,并且保持源来的数据集文件夹不变,我们可以用下面代码进行操作.

import os
import random
from PIL import Image
import shutil

# 定义原始文件夹路径、目标文件夹路径和剩余文件夹路径
source_folder = 'path/to/source/folder'#源文件夹
target_folder = 'path/to/target/folder'#测试集文件夹
remaining_folder = 'path/to/remaining/folder'#训练集文件夹

# 遍历原始文件夹中的每个文件夹
for folder_name in os.listdir(source_folder):
    if not os.path.isdir(os.path.join(source_folder, folder_name)):
        continue

    # 创建目标文件夹路径和剩余文件夹路径
    target_subfolder = os.path.join(target_folder, folder_name)
    os.makedirs(target_subfolder, exist_ok=True)
    remaining_subfolder = os.path.join(remaining_folder, folder_name)
    os.makedirs(remaining_subfolder, exist_ok=True)

    # 获取当前文件夹中所有图片的路径
    images = []
    for file_name in os.listdir(os.path.join(source_folder, folder_name)):
        if file_name.endswith('.JPG') or file_name.endswith('.jpg') or file_name.endswith('.png') or file_name.endswith('.jpeg') :#这里就是你的图片格式
            images.append(os.path.join(source_folder, folder_name, file_name))


    # 随机选择30张图片
    selected_images = random.sample(images, k=30)

    # 将选中的图片复制到目标文件夹
    for image_path in selected_images:
        with Image.open(image_path) as img:
            file_name = os.path.basename(image_path)
            target_path = os.path.join(target_subfolder, file_name)
            shutil.copy(image_path, target_path)

    # 将剩余的图片移动到剩余文件夹
    remaining_images = list(set(images) - set(selected_images))
    for image_path in remaining_images:
        file_name = os.path.basename(image_path)
        remaining_path = os.path.join(remaining_subfolder, file_name)
        shutil.copy(image_path, remaining_path)

这样你就得到了训练集文件夹里面包括各种类别的文件夹并且每个文件夹里面有30张随机抽出的图片了,训练集文件夹则是你抽取后剩余的图片啦!

如果你不保证的话可以测试一下训练集的图片数加测试集的图片书是否等于总的图片数.

你可以这样测试.

import torchvision #这个包学深度学习应该有,没有的话你换一个读取数据也行
data_path1 = 'trainfolder'
train_data = torchvision.datasets.ImageFolder(root=data_path1)
data_path2 = 'resourcefolder'
full_data = torchvision.datasets.ImageFolder(root=data_path2)
data_path3 = 'testfolder'
test_data = torchvision.datasets.ImageFolder(root=data_path3)
print(len(train_data))
print(len(test_data))
print(len(full_data))

总结

本节介绍了如何对我们得到的数据文件进行操作,将其分成测试集和训练集两个部分,以便我们后续对数据得操作,之后我会出一期数据增强的操作,我们先将原始数据集划分,而后做数据增强的原因是数据增强后在划分可能会对测试集的污染这样你在训练的时候看起来不错,但在投入实际时却效果不好的原因,马上就会更新,期待各位小伙伴的关注.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1377888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 KubeSphere 与极狐GitLab 打造云原生持续交付系统

极狐GitLab 简介 极狐GitLab 是一个一体化的 DevOps 平台,可以简单理解为 GitLab 在国内的“发行版”。是由极狐(GitLab)公司推出的产品(极狐(GitLab)公司是以“中外合资3.0”模式成立的公司,在国内独立运营,为国内用户提供适合本…

VLAN 详解二(VLAN 基础配置)

VLAN 详解二(VLAN 基础配置) VLAN 配置其实是非常简单的,但是想要学得比较精还是需要花费一些功夫的,根据不同的 VLAN 划分方式用不同的配置方法,但其实配置方法基本上都大同小异。 下面就以在实际网络中最常用的基于…

fiddler筛选请求并修改参数

一、筛选请求 使用过滤,需勾选User Filter才会生效,运行当前的过滤规则,需点击Run Filterset now Hosts:主机过滤之局域网过滤 No Zone Filter:默认选项,不设置区域过滤器show only Intranet Hosts&…

HarmonyOS——ArkUI状态管理

一、状态管理 在声明式UI编程框架中,UI是程序状态的运行结果,用户构建了一个UI模型,其中应用的运行时的状态是参数。当参数改变时,UI作为返回结果,也将进行对应的改变。这些运行时的状态变化所带来的UI的重新渲染&…

大模型在游戏行业的应用分析

文章目录 一、大模型作用1)节省美术成本2)模仿用户肖像,精准投放3)买量流程的自动化4)缩短视频素材制作周期5)例如新营销形式宣传(图生图)5)故事设计6)辅助代…

Linux操作系统----实用工具Git(配实操图)

绪论​ “针对问题 解决问题 针对问题!”,本章主要讲解的是Git是什么以及Git的如何搭建仓库和如何在Linux环境下通过指令的形式提交自己的代码到远程仓库。 话不多说安全带系好,发车啦(建议电脑观看)。 1.Git的来源以…

模拟开关灯

1.  实验任务 如图所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。…

ChatGLM3在windows上部署

1 项目地址 https://github.com/THUDM/ChatGLM3 简介:ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。 2 本机配置 台式机: CPU: Intel(R) Core(TM) i7-10700F RAM: 32G GPU: NV…

pytorch学习笔记(七 )

池化类似压缩 最大池化-上采样 例如给一个3的话就会生成一个33的窗口(生成相同的高和宽),给一个tuple就会给出一个相同的池化核。stride默认值就是核的大小 dilation 在卷积dialation设置之后每一个会和另外的差一个,空洞卷积 …

大模型在广告ctr预估中的应用

背景 预训练大模型在ctr预估方面取得了不错的效果,但是应用大模型方面还主要停留在提取离线预训练,然后使用大模型的打分结果或者中间的embedding向量,这种级联的应用方式相对灵活方便。但是这种使用大模型提取特征的方式存在自身的问题&…

使用知行之桥EDI系统的HTTP签名身份验证

本文简要概述了如何在知行之桥EDI系统中使用 HTTP 签名身份验证,并将使用 CyberSource 作为该集成的示例。 API 概述 API 是”应用编程接口”的缩写。这听起来可能很复杂,但它的真正含义是一种允许两个不同实体相互通信的软件。自开发以来,…

x-cmd pkg | tsx - Node.js 的直接替代品

目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 tsx 代表 “TypeScript execute”,由 TypeScript 编写,内部使用由 Go 语言编写的 esbuild 核心二进制实现超快的 TypeScript 编译,旨在增强 Node.js 以无缝运行 TypeScript / ESM /…

利用Wireshark分析IP协议

实验.利用Wireshark分析IP协议 一.实验目的 1.掌握Wireshark软件简单的过滤语法 2.掌握IP数据报的组成格式 3.掌握IP分片的计算方法 4.学会利用Wireshark抓包分析IP协议 二.实验环境 1.Wireshark软件 2.Windows 计算机 三.实验预备知识 1.IP…

便捷好用的iOS文件管理App

便捷好用的iOS文件管理App 摘要 本文介绍了一款功能强大、免费的iOS文件管理App——克魔助手。通过使用克魔助手,用户可以轻松管理手机存储空间,清理垃圾文件,整理文件,并进行文件传输和截图操作。本文将详细介绍克魔助手的各项…

html+css实现子元素完全居中常见方案

详细过程 查看公众号文章 htmlcss实现子元素完全居中常见方案 获取更多内容,请关注微信公众号。搜索“码圈小橙子”,或扫描下方二维码获取关注

轻量化的yolov8部署到安卓Android手机端

一、pytorch环境配置和yolov8源码安装 首先在电脑上需要配置好pytorch环境,和yolov8源码的下载 然后针对yolov8做自己的轻量化改进 二、下载Android Studio和ncnn-android-yolov8 1. Android Studio官网链接: 下载 Android Studio 和应用工具 - And…

预训练中文GPT2(包括重新训练tokenizer)

训练数据 1.json后缀的文件 2.数据是json line格式,一行一条json 3. json结构如下 {"content": "①北京和上海户籍的游客可获得韩国多次签证;②“整容客”可以不经由韩国使领馆、直接在网上申请签证;③中泰免签的实施日期…

屏幕截图编辑工具Snagit中文

Snagit是一款优秀的屏幕、文本和视频捕获与转换程序。它能够捕获屏幕、窗口、客户区窗口、最后一个激活的窗口或用鼠标定义的区域,并支持BMP、PCX、TIF、GIF或JPEG格式的保存。Snagit还具有自动缩放、颜色减少、单色转换、抖动等功能,并能将捕获的图像转…

【Linux】:Linux中的Git分支管理

本章开始介绍 Git 的杀⼿级功能之⼀(注意是之⼀,也就是后⾯还有之⼆,之三……):分⽀。分⽀就是科幻电影⾥⾯的平⾏宇宙,当你正在电脑前努⼒学习 C 的时候,另⼀个你正在另⼀个平⾏宇宙⾥努⼒学习…

x3daudio1_7.dll如何恢复,这6个方法都能修复x3daudio1_7.dll丢失问题

x3daudio1_7.dll文件缺失”。那么,什么是x3daudio17.dll文件?它的作用和影响又是什么呢?本文将详细介绍x3daudio17.dll文件的定义、作用和影响,并提供6个修复方法来解决这个问题。 一、x3daudio1_7.dll是什么? x3dau…