尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

python脚本划分数据集

python脚本划分数据集
📅 发布时间:2026/6/18 15:38:25

利用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)
God will send the rain when you are ready.You need to prepare your field to receive it.

相关新闻

  • FPExpress 2025.1 使用方法
  • Moka人力资源管理系统入选 NextGen Tech30 榜单
  • 用前端(HTML+Node.js)实现物品借用登记:完整代码示例

最新新闻

  • 如何对泉州电力负荷数据集进行有效的分析和预测 如何对泉州电力负荷数据集进行有效的分析和预测 深入对泉州电力负荷数据集的分析和建模
  • SSL 免费证书安装(Let‘s Encrypt)
  • 靠谱的上海公司律所怎么选 3个核心判断标准 - 资讯纵览
  • 2026年吉林职称代办选购指南:吉林工程师职称、长春职称申报、建筑职称咨询机构选择指南,服务、流程、合规三维度客观解析 - 海棠依旧大
  • 河北养鹿勾花网厂家实力排行:聚焦专业适配性 - 起跑123
  • VMware虚拟机安装Ubuntu 22.04 LTS全攻略:从配置优化到排错

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号