当前位置: 首页 > article >正文

深度学习数据集划分比例多少合适

在这里插入图片描述
在机器学习和深度学习中,测试集的划分比例需要根据数据量、任务类型和领域需求灵活调整。


1. 常规划分比例

通用场景
  • 训练集 : 验证集 : 测试集 = 60% : 20% : 20%
    适用于大多数中等规模数据集(如数万到数十万样本),平衡了训练数据量和评估的可靠性。
大数据场景
  • 训练集 : 验证集 : 测试集 = 98% : 1% : 1%
    当数据量极大时(如百万级以上),测试集比例可大幅降低,因为少量样本已足够评估模型性能(例如 ImageNet 使用约 120 万训练图像,5 万验证图像)。
小数据场景
  • 训练集 : 测试集 = 80% : 20%
    若数据量极小(如几百到几千样本),可省略验证集,直接划分训练集和测试集,并通过交叉验证(如 K 折交叉验证)调参。

2. 关键影响因素

数据量大小
  • 数据量越大,测试集比例可越低(如 5%-10%),因为绝对数量已足够保证统计显著性。
  • 数据量越小,测试集比例需更高(如 20%-30%),但可能牺牲训练数据量,此时推荐交叉验证。
任务复杂度
  • 简单任务(如二分类):测试集比例可略低(10%-15%)。
  • 复杂任务(如目标检测、NLP):测试集比例需更高(20%-30%),以覆盖更多场景。
数据分布
  • 类别不均衡:需采用分层抽样(Stratified Sampling),确保测试集的类别分布与原始数据一致。
  • 时间序列数据:按时间顺序划分(如训练集用历史数据,测试集用最新数据),而非随机划分。

3. 特殊场景与技巧

交叉验证替代固定划分
  • 小数据集:使用 K 折交叉验证(如 5 折或 10 折),将训练集分为 K 个子集,轮流作为验证集,最大化数据利用率。
  • 示例
    from sklearn.model_selection import KFold
    kf = KFold(n_splits=5)
    for train_idx, val_idx in kf.split(X):X_train, X_val = X[train_idx], X[val_idx]# 训练和验证
    
领域特定需求
  • 医学/金融数据:因数据获取成本高,测试集可能仅占 10%-15%,但需确保样本代表性。
  • 自动驾驶/工业检测:测试集需覆盖更多边缘案例(如罕见场景),比例可能提高到 25%-30%。

4. 经验总结

数据量规模推荐测试集比例典型划分方式
极小(<1k 样本)20%-30%训练集 + 测试集 + 交叉验证
小(1k-10k 样本)15%-20%训练集 (70%) + 验证集 (10%) + 测试集 (20%)
中等(10k-1M 样本)10%-15%训练集 (80%) + 验证集 (10%) + 测试集 (10%)
大(>1M 样本)1%-5%训练集 (98%) + 验证集 (1%) + 测试集 (1%)

5. 注意事项

  1. 测试集的“不可见性”
    测试集仅用于最终评估,不可参与调参或模型选择,否则会导致数据泄露,高估模型性能。
  2. 数据增强的影响
    若对训练集进行数据增强,测试集需保持原始分布,避免增强操作干扰评估结果。
  3. 领域适配性
    在特定领域(如医疗、金融),测试集需包含与实际应用场景一致的样本。

实际案例参考

  • MNIST 手写数字分类(6万训练样本 + 1万测试样本):测试集占 ~14%。
  • ImageNet 图像分类(128万训练图像 + 5万验证图像):测试集占 ~3.7%。
  • Kaggle 比赛:通常提供固定测试集(如 50% 数据),剩余用于训练和验证。

相关文章:

深度学习数据集划分比例多少合适

在机器学习和深度学习中&#xff0c;测试集的划分比例需要根据数据量、任务类型和领域需求灵活调整。 1. 常规划分比例 通用场景 训练集 : 验证集 : 测试集 60% : 20% : 20% 适用于大多数中等规模数据集&#xff08;如数万到数十万样本&#xff09;&#xff0c;平衡了训练数…...

CExercise_1_5 水仙花数

题目&#xff1a; 经典循环案例&#xff1a;请求出所有的水仙花数&#xff0c;并统计总共有几个。 所谓的水仙花数是指一个三位数&#xff0c;其各位数字的立方和等于该数本身。 举例&#xff1a;153就是一个水仙花数&#xff0c;153 1 * 1 * 1 5 * 5 * 5 3 * 3 * 3 1 125…...

用C实现一个最简单的正则表达式引擎

用C实现一个简单的正则表达式引擎 下面我将实现一个极简的正则表达式引擎&#xff0c;仅支持以下基本功能&#xff1a; . 匹配任意单个字符* 匹配零个或多个前导字符^ 匹配字符串开头$ 匹配字符串结尾 完整代码实现 #include <stdio.h> #include <stdbool.h>bo…...

哈密尔顿路径(Hamiltonian Path)及相关算法题目

哈密尔顿路径要求访问图中每个顶点恰好一次&#xff0c;通常用于解决旅行商问题&#xff08;TSP&#xff09;或状态压缩DP问题。 哈密尔顿路径&#xff08;Hamiltonian Path&#xff09;是指在一个图中经过每个顶点恰好一次的路径。如果这条路径的起点和终点相同&#xff08;即…...

MINIQMT学习课程Day10

开始获取股票数据课程的学习&#xff1a; 获取qmt账号的持仓情况后&#xff0c;我们进入下一步&#xff0c;如何获得当前账号的委托状况 还是之前的步骤&#xff0c;打开qmt&#xff0c;选择独立交易&#xff0c; 之后使用pycharm&#xff0c;编写py文件 导入包&#xff1a…...

JAVA实战开源项目:智慧图书管理系统(Vue+SpringBoot) 附源码

本文项目编号 T 152 &#xff0c;文末自助获取源码 \color{red}{T152&#xff0c;文末自助获取源码} T152&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

Linux 系统管理综合实训 —— 基于 NAT 模式的多 IP 配置、Nginx 服务部署及存储管理

1. 虚拟机网络配置&#xff1a;NAT模式与多IP地址设置 将你的虚拟机的网卡模式设置为nat模式&#xff0c;给虚拟机网卡配置三个主机位分别为100、200、168的ip地址 设置静态IP [rootlocalhost ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.2.100/2…...

如何在windows 环境、且没有显卡的情况下用python跑通从ModelScope下载的大模型的调用

文章目录 背景介绍源代码&#xff1a;安装调试过程1.设置第三方镜像源2.预先安装&#xff1a;3.在python中创建代码&#xff1a;4.最终修改程序,将device_map从“cuda”改成“auto”&#xff0c;大模型调用1.5B&#xff08;1___5B)的5.最终跑出结果解释&#xff1a;示例&#x…...

黑马点评redis改 part 1

本篇将主要阐述短信登录的相关知识&#xff0c;感谢黑马程序员开源&#xff0c;感谢提供初始源文件&#xff08;给到的是实战第7集开始的代码&#xff09;【Redis实战篇】黑马点评学习笔记&#xff08;16万字超详细、Redis实战项目学习必看、欢迎点赞⭐收藏&#xff09;-CSDN博…...

Apache Struts2 漏洞(CVE-2017-5638)技术分析

一、漏洞简介 CVE-2017-5638 是 Apache Struts2 中的一个远程命令执行漏洞&#xff0c;攻击者可以通过构造特定的 HTTP 请求头&#xff0c;利用Struts的 OGNL 表达式解析机制&#xff0c;在服务器端执行任意代码。 二、漏洞触发场景 漏洞存在于 Struts2 的 Jakarta Multipar…...

A2DP(Advanced Audio Distribution Profile)是蓝牙协议栈中用于音频传输的一个标准化协议

A2DP&#xff08;Advanced Audio Distribution Profile&#xff09;是蓝牙协议栈中用于音频传输的一个标准化协议&#xff0c;主要用于高质量音频流的无线传输。以下是A2DP协议的详细信息&#xff1a; 定义 A2DP协议允许音源设备&#xff08;Source&#xff0c;简称SRC&#…...

【Ragflow】11. 文件解析流程分析/批量解析实现

概述 本文继续对ragflow文档解析部分进行分析&#xff0c;并通过脚本的方式实现对文件的批量上传解析。 文件解析流程 文件解析的请求处理流程大致如下&#xff1a; 1.前端上传文件&#xff0c;通过v1/document/run接口&#xff0c;发起文件解析请求 2.后端api\apps\docum…...

第三期:深入理解 Spring Web MVC [特殊字符](数据传参+ 特殊字符处理 + 编码问题解析)

✨前言&#xff1a;传参和状态管理&#xff0c;看似简单其实门道不少 在 Web 开发中&#xff0c;前端和后端最核心的交流方式就是“传参”&#xff0c;而“传参”除了涉及如何写代码获取参数&#xff0c;还藏着很多开发者容易忽略的细节&#xff1a; 为什么 URL 带了中文&…...

嵌入式学习笔记——ARM-中断与异常

文章目录 中断与异常的区别中断与 DMA 的区别中断能否睡眠&#xff1f;下半部能否睡眠&#xff1f;1. 中断处理程序不能睡眠2. 下半部&#xff08;SoftIRQ、Tasklet、Workqueue&#xff09; 中断处理注意点1. 快进快出2. 避免阻塞3. 正确返回值4. 如何处理大量任务5. 避免竞态问…...

Everything 安装教程与使用教程(附安装包)

文章目录 前言一、Everything 介绍二、Everything 安装教程1.Everything 安装包下载2.选择安装文件3.选择安装语言4.接受许可协议5.选择安装位置6.配置安装选项7.完成安装 三、Everything 使用教程1.启动软件2.简单关键词搜索3.按类型搜索 前言 在日常使用电脑时&#xff0c;随…...

嵌入式开发中栈溢出的处理方法

嵌入式开发中栈溢出的处理方法 目录 引言栈溢出的原理栈溢出的危害栈溢出检测方法 哨兵变量法栈着色法硬件监测机制编译器栈保护 裸机系统中的栈溢出处理操作系统中的栈溢出处理预防栈溢出的最佳实践结论 引言 在嵌入式系统开发中&#xff0c;栈溢出是一个常见且危险的问题…...

SQL语句(三)—— DQL

目录 基本语法 一、基础查询 1、查询多个字段 2、字段设置别名 3、去除重复记录 4、示例代码 二、条件查询 1、语法 2、条件列表常用的运算符 3、示例代码 三、分组查询 &#xff08;一&#xff09;聚合函数 1、介绍 2、常见的聚合函数 3、语法 4、示例代码 &…...

#python项目生成exe相关了解

在 Windows 上将 Python 项目 生成 EXE 可执行文件&#xff0c;主要使用 pyinstaller。以下是完整步骤&#xff1a; &#x1f4cc; 1. 安装 PyInstaller pip install pyinstaller如果已安装&#xff0c;可执行以下命令检查版本&#xff1a; pyinstaller --version&#x1f4c…...

Opencv计算机视觉编程攻略-第九节 描述和匹配兴趣点

一般而言&#xff0c;如果一个物体在一幅图像中被检测到关键点&#xff0c;那么同一个物体在其他图像中也会检测到同一个关键点。图像匹配是关键点的常用功能之一&#xff0c;它的作用包括关联同一场景的两幅图像、检测图像中事物的发生地点等等。 1.局部模板匹配 凭单个像素就…...

JSON-lib考古现场:在2025年打开赛博古董店的奇妙冒险

各位在代码海洋里捡贝壳的探险家们&#xff01;今天我们要打开一个尘封的Java古董箱——JSON-lib&#xff01;这货可是2003年的老宝贝&#xff0c;比在座很多程序员的工龄还大&#xff01;准备好穿越回Web 1.0时代&#xff0c;感受XML统治时期的余晖了吗&#xff1f; &#x1f…...

Android: Handler 的用法详解

Android 中 Handler 的用法详解 Handler 是 Android 中用于线程间通信的重要机制&#xff0c;主要用于在不同线程之间发送和处理消息。以下是 Handler 的全面用法指南&#xff1a; 一、Handler 的基本原理 Handler 基于消息队列(MessageQueue)和循环器(Looper)工作&#xff0c…...

汇编学习之《push , pop指令》

学习本章前线了解ESP, EBP 指令 汇编学习之《指针寄存器&大小端学习》-CSDN博客 栈的特点&#xff1a; 好比一个垂直容器&#xff0c;可以陆续放入物体&#xff0c;但是先放的物体通常会被后面放的物体压着&#xff0c;只有等上面后放的物品拿出来后&#xff0c;才能…...

Python循环控制语句

1. 循环类型概述 Python提供两种主要的循环结构&#xff1a; while循环 - 在条件为真时重复执行for循环 - 遍历序列中的元素 2. while循环 基本语法 while 条件表达式:循环体代码示例 count 0 while count < 5:print(f"这是第{count1}次循环")count 13. f…...

微信小程序(下)

目录 在事件处理函数中为 data 中的数据赋值 事件传参 bindinput 的语法格式 实现文本框和 data 之间的数据同步 条件渲染 结合 使用 wx:if hidden wx:if与 hidden 的对比 wx:for 手动指定索引和当前项的变量名 wx:key 的使用 WXSS 和 CSS 的关系 什么是 rpx 尺寸…...

【零基础入门unity游戏开发——2D篇】2D 游戏场景地形编辑器——TileMap的使用介绍

考虑到每个人基础可能不一样&#xff0c;且并不是所有人都有同时做2D、3D开发的需求&#xff0c;所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】&#xff1a;主要讲解C#的基础语法&#xff0c;包括变量、数据类型、运算符、…...

vector的介绍与代码演示

由于以后我们写OJ题时会经常使用到vector&#xff0c;所以我们必不可缺的是熟悉它的各个接口。来为我们未来作铺垫。 首先&#xff0c;我们了解一下&#xff1a; https://cplusplus.com/reference/vector/ vector的概念&#xff1a; 1. vector是表示可变大小数组的序列容器…...

ubuntu 22.04 解决LXC 报错CGroupV1 host system

解决CGroupV1 host system 报错 echo "cgroupv1 environment" sed -i s/^GRUB_CMDLINE_LINUX.*/GRUB_CMDLINE_LINUX_DEFAULT"quiet splash systemd.unified_cgroup_hierarchy0" / /etc/default/grub update-grub reboot 下载oracle 7 Linux 容器测试 l…...

JavaEE初阶复习(JVM篇)

JVM Java虚拟机 jdk java开发工具包 jre java运行时环境 jvm java虚拟机(解释执行 java 字节码) java作为一个半解释,半编译的语言,可以做到跨平台. java 通过javac把.java文件>.class文件(字节码文件) 字节码文件, 包含的就是java字节码, jvm把字节码进行翻译转化为…...

MINIQMT学习课程Day9

获取qmt账号的持仓情况后&#xff0c;我们进入下一步&#xff0c;如何获得当前账号的委托状况 还是之前的步骤&#xff0c;打开qmt&#xff0c;选择独立交易&#xff0c; 之后使用pycharm&#xff0c;编写py文件 导入包&#xff1a; from xtquant import xtdata from xtqua…...

动态规划似包非包系列一>组合总和IIV

目录 题目分析&#xff1a;状态表示&#xff1a;状态转移方程&#xff1a;初始化填表顺序返回值&#xff1a;代码呈现&#xff1a; 题目分析&#xff1a; 状态表示&#xff1a; 状态转移方程&#xff1a; 初始化填表顺序返回值&#xff1a; 代码呈现&#xff1a; class Soluti…...