python脚本划分数据集

news/2025/9/23 15:30:16/文章来源:https://www.cnblogs.com/steven0325/p/19107296

利用python脚本对文件夹中的大量文件划分训练集train、验证集val和测试集test。source_dir为源文件夹,source_dir目录中可以包含不同种类的文件夹。

import os
import shutil
import random
from pathlib import Pathdef split_dataset(source_dir, train_ratio=0.7, val_ratio=0.2, test_ratio=0.1):"""将数据集按照指定比例分割为训练集、验证集和测试集参数:source_dir: 原始数据集目录train_ratio: 训练集比例val_ratio: 验证集比例test_ratio: 测试集比例"""# 确保比例之和为1assert abs(train_ratio + val_ratio + test_ratio - 1.0) < 1e-6, "比例之和必须为1"# 创建目标目录train_dir = os.path.join(os.path.dirname(source_dir), "train")val_dir = os.path.join(os.path.dirname(source_dir), "val")test_dir = os.path.join(os.path.dirname(source_dir), "test")for dir_path in [train_dir, val_dir, test_dir]:if not os.path.exists(dir_path):os.makedirs(dir_path)print(f"创建目录: {dir_path}")# 遍历源目录中的所有文件和子目录for root, dirs, files in os.walk(source_dir):# 跳过空目录if not files:continue# 为当前目录在目标目录中创建相应的子目录结构relative_path = os.path.relpath(root, source_dir)for dir_path in [train_dir, val_dir, test_dir]:target_dir = os.path.join(dir_path, relative_path)if not os.path.exists(target_dir):os.makedirs(target_dir)# 随机打乱文件顺序random.shuffle(files)total_files = len(files)# 计算各集合的文件数量train_count = int(total_files * train_ratio)val_count = int(total_files * val_ratio)# 测试集数量 = 剩余的文件test_count = total_files - train_count - val_count# 分配文件到各个集合train_files = files[:train_count]val_files = files[train_count:train_count + val_count]test_files = files[train_count + val_count:]# 复制文件到相应的目录for file in train_files:src = os.path.join(root, file)dst = os.path.join(train_dir, relative_path, file)shutil.copy2(src, dst)for file in val_files:src = os.path.join(root, file)dst = os.path.join(val_dir, relative_path, file)shutil.copy2(src, dst)for file in test_files:src = os.path.join(root, file)dst = os.path.join(test_dir, relative_path, file)shutil.copy2(src, dst)print(f"处理目录: {relative_path}")print(f"  训练集: {len(train_files)} 个文件")print(f"  验证集: {len(val_files)} 个文件")print(f"  测试集: {len(test_files)} 个文件")print("数据集分割完成!")if __name__ == "__main__":# 设置源数据集目录# 请将此处替换为你的原始数据集目录source_directory = input("请输入原始数据集目录路径: ").strip()# 检查源目录是否存在if not os.path.isdir(source_directory):print(f"错误: 目录 '{source_directory}' 不存在!")else:# 按7:2:1的比例分割数据集split_dataset(source_directory, 0.7, 0.2, 0.1)

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

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

相关文章

发送一朵云

发送一朵云天色渐晚,似乎无心自习。趁同学们不注意,猛然打开窗户。清香的空气瞬间在整间教室散开,微风拂动着大家的练习册,也拂动着她的刘海。 咦,同桌的她怎么低着头,笑盈盈的?我将头缩到课桌底下看她。她抿着…

FPExpress 2025.1 使用方法

FPExpress 2025.1 使用方法待编写中

上海工程建设造价信息网站英雄联盟更新公告最新

ChatGPT 的工作原理 传统搜超搜引擎原理&#xff1a;蜘蛛抓取和数据收集&#xff0c;用户交互查找。 ChatGPT 的工作原理&#xff1a;数据收集称为预训练&#xff0c;用户响应阶段称为推理。 ChatGPT是一种基于自然语言处理技术的人工智能模型&#xff0c;它的工作原理建立在…

漳州微信网站建设电话怎么做网站卖东西

关键词&#xff1a;Web开发、Django、AJAX、前端交互、动态网页 今天和大家分享Django的AJAX支持。AJAX可实现在网页上动态加载内容、无刷新更新数据的需求。 1. AJAX简介 AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;是一种在网页上实现异步通信的技术。通过…

莱芜网站建设优化国内一家做国外酒店团购的网站

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览三、问题过程源码追踪…

网站怎样做wap端医院网站建设方案计划

步骤 1、编写32位控制台程序2、实现字符串传参3、封装Process类库4、获取进程调用的返回值 在实际的项目中经常使用一些第三方C/C库&#xff0c;于历史原因&#xff0c;有的C库是32位的&#xff0c;由于没有源代码&#xff0c;所以一般很难修改为64位的类库&#xff0c;但又需要…

购买网站建设合同协议模板网络推广营销策划方案

SaaS近几年在国内逐渐升温&#xff0c;很多企业管理者都开始了解SaaS是什么意思&#xff0c;SaaS是企业根据需要&#xff0c;从SaaS提供商获取软件使用权的&#xff0c;直接通过互联网就可进行操作。对于我国大多数中小企业来说&#xff0c;选择SaaS模式的crm客户管理系统也许是…

Spring IO工具类及其用法

Spring IO工具类及其用法Spring IO 工具类FileCopyUtils 用于文件和流之间的复制操作,提供了多种重载方法。import org.springframework.util.FileCopyUtils; import java.io.File; import java.io.FileInputStream; …

Typora+Cnblog实现Markdown图片自动上传

作者:SkyXZ CSDN:SkyXZ~-CSDN博客 博客园:SkyXZ - 博客园 相信很多同学在使用Typora写MarkDown文档的时候都会发现我们复制进文档的图片都是本地路径,这也意味着但我们将写的文档分享给别人的时候别人是看…

Moka人力资源管理系统入选 NextGen Tech30 榜单

Moka人力资源管理系统入选 NextGen Tech30 榜单「在当下这个全新的商业周期中,真正改变游戏规则的公司,不再只是“出海”,而是自成立之初就为全球而生」——NextGen Tech302025 年 9 月,新加坡见证亚洲创新力量的集…

嵌套粒子群优化(Nested PSO)的电力系统经济调度方案

一、问题建模与算法设计 1.1 多目标优化模型 目标函数:经济目标:最小化总发电成本(含阀点效应) 环境目标:最小化污染物排放与爬坡惩罚约束条件:功率平衡:\(∑i=1NPi,t=Pload,t+Ploss,t\) 机组出力限制:\(Pi,mi…

淮安哪个做网站好点1_ 掌握网站开发的基本流程 要求:熟悉网站开发与设计的基本流程.

前言简单来说&#xff0c;数据库事务就是保证一组数据操作要么全部成功&#xff0c;要么全部失败。在 MySQL 中&#xff0c;事务是在引擎层实现的。原生的 MyISAM 引擎不支持事务&#xff0c;也是为什么 InnoDB 会取代它的重要原因之一。隔离性与隔离级别当数据库上有多个事务同…

仿站酷网站模板航空公司官网

一、简介 1、一款由Piriform开发的免费文件恢复工具,它能够帮助用户恢复那些不小心从电脑上删除的文件,包括从回收站清空的文件,以及因用户错误操作而从存储设备中删除的图片、音乐、文档等多种格式的文件。Recuva支持对硬盘、闪存卡、U盘等多种存储介质进行扫描与恢复,并且…

hk网站域名网站建设 书

CSDNpdf电子准考证查询下载系统(实证效果可照片)V1.0 使用场景: 教育机构比如学校用pdf准考证查询下载系统(实证效果可照片,最适合准考证打印); 也可自定义图片及坐标用于各种优秀党员三好学生等荣誉证书、聘书授权代理pdf电子证书查询与下载。 推荐Linux PHP5.5-7.3使用使…

游戏网站服务器租用网站正在建设中提示页面

By Lthis 上个月就想写了&#xff0c;一直没时间...网上大概搜了一下&#xff0c;原理与操作倒是一大堆&#xff0c;一直没看到源码实现&#xff0c;总得有人动手&#xff0c;这回轮到我了。东西写得很烂&#xff0c;请大牛勿喷。一直觉得靠源码的方式驱动学习是非常好的一种学…

山南网站建设做网站需要什么费用

文章目录 Linux Shell脚本文件vim编辑器vi的使用 认识Bash变量环境变量用户操作变量delcare与typeset 命令的别名与历史命名 正则表达式Shell ScriptsShell Scripts良好习惯第一个shell其他shell例子 - 来自鸟哥linux私房菜语法介绍shell 的调试 Linux Shell脚本文件 vim编辑器…

网站建设河北石家庄学做烤制食品的网站

【精选】Kafka、RocketMQ、RabbitMQ的比较总结_kafka rabbitmq rocketmq_【江湖】三津的博客-CSDN博客

怎么自己做网站模板整站seo排名外包

智慧医院3D人体导诊系统源码 开发语言:java 开发工具:IDEA 前端框架:Uniapp 后端框架:springboot 数 据 库:mysql 移 动 端:微信小程序、H5 “智慧导诊”以人工智能手段为依托,为人们提供智能分诊、问病信息等服务,在一定程度上满足了人们自我健康管理、精准挂号…

实用指南:C++编程学习(第34天)

实用指南:C++编程学习(第34天)2025-09-23 15:14 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impor…

Java集合 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …