机器学习:训练集与测试集的划分

模型评估中测试集的选择方法 前言 对训练好的模型进行评估,目的是为了测试我们所训练的模型是否拥有好的泛化能力。为此,需使用一个“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。通常我们假设测试样本也是从样本真实分布中独立同分布采样而得。但需注意的是,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现,未在训练过程中使用过。因此本文介绍如何从数据集中选择测试集的方法。 ... 阅读详情
AI摘要

本文详细解释了机器学习中划分训练集和测试集的重要性,包括提高模型泛化能力、防止过拟合及寻找最优参数。介绍了留出法和k折交叉验证法两种常见数据集划分方法,展示了如何使用sklearn库进行实际操作。

机器学习中有一个问题是不可避免的,那就是划分测试集和训练集。为什么要这么做呢,当然是提高模型的泛化能力,防止出现过拟合,并且可以寻找最优调节参数。训练集用于训练模型,测试集则是对训练好的模型进行评估的数据集。通常来说,训练集和测试集是不会有交集的,常用的数据集划分方法有以下两种:

  • 留出法
  • k折交叉验证法

留出法

直接将原数据集划分为两个互斥的数据集,即训练集与测试集。sklearn直接提供给我们这样的方法,便于操作

sklearn.model_selection.train_test_split(*arrays, **options)

参数

含义

test_size测试集占总数据的大小,以(0.0,1.0)之间的小数表示,默认值为0.25
random_state随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。

通过构造一个二维数组实现函数的功能

import numpy as np
from sklearn.model_selection import train_test_split

#构造一个X是5行2列的二维数组,y为5个元素的列表
X, y = np.random.randint(10,size=(5,2)), list(range(5))
X
#array([[8, 4],
        [3, 0],
        [9, 0],
        [5, 9],
        [0, 7]])

y
#[0, 1, 2, 3, 4]

#将X,y划分为训练集和测试集,测试集的比例为0.3
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=23)
X_train
#array([[9, 0],
        [8, 4],
        [5, 9]])

X_test
#array([[3, 0],
        [0, 7]])

y_train
#[2, 0, 3]

y_test
#[1, 4]

可见结果是符合设定要求的,运用时也很简单,只需将划分后的各部分数据集弄清楚不混淆即可。sklearn.model_selection.train_test_split

k折交叉验证法(当k为样本数量时即为留一法)

K折交叉验证,这是将数据集分成K份,所谓K折就是将数据集通过K次分割,使得所有数据既在训练集出现过,又在测试集出现过。当然,每次分割中不会有重叠,即不会有交集,相当于无放回抽样。

sklearn.model_selection.KFold(n_splits=’warn’, shuffle=False, random_state=None)

参数含义
n_split折叠数量,最少为2。默认为3。
shuffle是否在分割之前对数据进行洗牌。默认为false
random_state随即种子数。

同样的通过构造数组实现函数的功能了解函数的使用方法:

from sklearn.model_selection import KFold
import numpy as np

#定义X,y
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y = np.array([1, 2, 3, 4])
kf = KFold(n_splits=4)

#打印折叠后分别作为训练集和测试集在原数据集上的索引
for train_index, test_index in kf.split(X):
    print("TRAIN:", train_index, "TEST:", test_index)
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]

#TRAIN: [1 2 3] TEST: [0]
#TRAIN: [0 2 3] TEST: [1]
#TRAIN: [0 1 3] TEST: [2]
#TRAIN: [0 1 2] TEST: [3]

可以看到,在最后的结果中,并不会出现两次同样的数据。这样可以保证划分后的数据每一份都能作为一次测试集。(需要注意的是,这里用的是原数据集的索引,而不是直接引用数据)sklearn.model_selection.KFold

这两个方法的主要区别在于,留出法中测试集对应的模型与训练的模型相比可能具有较大差距,降低保真性,这种没有较好的解决办法,只能人工去调整正负样本的比例,保证训练集与测试集正负样本比例大致相同,常见做法是将大约2/3~4/5的样本用于训练,剩余样本留作测试。

k折交叉验证法不受随机样本划分方式的影响,训练出来的模型与总的数据集模型很相似。缺点在于计算成本高,数据集小的话还可以,当数据规模很大时,计算时间以及成本就相当惊人了。一般来说,根据经验我们一般选择k=5或10。

机器学习数据集划分:训练集、验证集、测试集的作用与划分策略 在机器学习与深度学习项目中,数据集划分是构建稳健模型的基础环节。其核心原理在于通过分离数据来模拟模型在未知数据上的表现,从而评估模型的泛化能力。这一方法的技术价值在于防止过拟合、实现无偏评估,并为超参数调优提供可靠依据。常见的应用场景包括图像分类、自然语言处理以及时间序列预测等任务。在实际操作中,训练集用于模型学习,验证集用于调优与选择,测试集则用于最终性能评估。针对过拟合和数据泄露等常见问题,合理的划分策略至关重要。本文通过具体代码示例,详细解释了如何使用sklearn和PyTorch进行数据集划分,并介 阅读详情

相关推荐

机器学习数据划分:训练集、验证集与测试集的作用与实战指南

在机器学习与深度学习项目中,数据集的科学划分是模型成功的基础。其核心原理在于通过分离数据来模拟模型在未知数据上的表现,从而评估其泛化能力。从技术价值看,合理的划分能有效诊断过拟合与欠拟合,为超参数调优和模型选择提供可靠依据,是确保模型从“实验环境”走向“生产环境”的关键步骤。这一方法广泛应用于计算机视觉(如目标检测、图像分割)、自然语言处理及工业质检等多种AI应用场景。具体到工程实践,无论是使用YOLO系列模型进行目标检测,还是采用U-Net进行医学图像分割,都必须遵循训练集用于模型学习、验证集用于调参监控

weixin_29189381的博客 313

机器学习:训练集与测试集分割train_test_split

在使用机器学习训练模型算法的过程中,为提高模型的泛化能力、防止过拟合等目的,需要将整体数据划分为训练集和测试集两部分,训练集用于模型训练,测试集用于模型的验证。此时,使用train_test_split函数可便捷高效的实现数据训练集与测试集的划分。

十年以上架构设计经验,专注于软件架构和人工智能领域,对机器视觉、NLP、音视频等领域都有涉猎 1万+

机器学习数据集划分实战:训练集、验证集、测试集的本质区别与避坑指南

在机器学习与深度学习项目中,数据集划分是模型开发流程的基石,直接影响模型的泛化能力与最终上线效果。其核心原理在于通过分离数据来模拟模型面对未知数据时的表现,从而避免过拟合,确保评估的公正性。这一实践的技术价值在于,它为模型选择、超参数调优提供了可靠的依据,是构建稳健AI系统的关键环节。无论是进行图像分类、目标检测(如训练YOLO系列模型),还是自然语言处理任务,正确的数据划分策略都是项目成功的先决条件。本文将深入解析训练集、验证集和测试集的核心作用与实战要点,特别是针对**数据泄露**和**过拟合**这两个

weixin_30175731的博客 282

如何把数据集划分成训练集和测试集

如何把数据集划分成训练集和测试集

即使是不成熟的尝试,也胜于从不执行的策略。 7409

机器学习模型评估:训练集与测试集划分详解

在机器学习中,模型评估是确保算法泛化能力的关键环节。训练集-测试集划分作为最基础的评估方法,通过将原始数据分割为训练和测试两部分,有效避免了过拟合问题。其核心原理在于保持数据独立性,训练集用于模型学习,测试集则模拟真实场景评估性能。scikit-learn库提供的train_test_split函数实现了这一过程,支持随机种子设置和分层抽样等高级功能。这种方法特别适用于中小型数据集,在分类和回归问题中都有广泛应用,如声纳信号分类和波士顿房价预测。理解数据划分的原理和实现,是机器学习工程师构建可靠模型的基础技

weixin_31776191的博客 414

训练集与测试集划分:机器学习泛化能力的生死线

在机器学习中,训练数据与测试数据的划分并非简单切分,而是构建模型泛化能力的核心实验设计。其本质是模拟真实部署环境,通过控制变量确保评估沙盒的独立性、同分布性与不可访问性。若划分不当或发生数据泄露(如标准化用全量均值、目标编码未平滑、时间序列随机切分),模型将从规律发现退化为记忆游戏,导致线上性能断崖式下跌。该实践直接影响分类、回归、时序预测等主流任务的可信度,尤其在医疗诊断、金融风控、推荐系统等高风险场景中,严谨的数据划分是模型落地的前提保障。

weixin_29163581的博客 345

机器学习数据划分:训练集、验证集与测试集的核心原理与YOLO实战指南

在机器学习与深度学习项目中,数据划分是构建可靠模型的基石。其核心原理在于通过将数据集分割为训练集、验证集和测试集,分别承担模型学习、超参数调优与最终性能评估的职责,从而科学评估模型的泛化能力。这一流程的技术价值在于防止过拟合与欠拟合,确保模型评估的无偏性,是模型能否成功上线的关键。在工程实践中,无论是使用scikit-learn进行分层抽样,还是应用K折交叉验证处理小样本数据,都需遵循严格的数据隔离原则。特别是在训练自己的YOLO数据集等热门场景中,正确配置数据路径与监控验证集指标,是获得稳定mAP等性能指

weixin_32238157的博客 348

划分训练集、验证集和测试集代码

val_ratio,和test_ratio分别为验证集和测试集所占的比例,test_ratio=0表示不划分测试集。输入需要划分的数据所在的文件夹,返回一个划分好的包含train,val和test的文件夹。

Billie使劲学的博客 4426

机器学习数据集划分:训练集、验证集与测试集实践指南

在机器学习项目中,数据集划分是模型开发的基础环节。训练集用于参数学习,验证集进行超参数调优,测试集则评估最终泛化能力,三者共同构成模型评估的完整闭环。合理的划分策略能有效防止数据泄露,提升模型在真实场景中的表现。通过分层抽样、时间序列划分等技术,可以确保数据分布的一致性。在实际工程中,结合交叉验证和自动化工具如scikit-learn,能够优化资源利用效率。特别是在计算机视觉和自然语言处理任务中,正确的数据划分直接影响YOLO、PaddleOCR等模型的性能指标。掌握这些核心方法,是每位算法工程师从实验走向

weixin_42528902的博客 280

使用sklearn将数据集分为训练集和测试集

在使用机器学习算法之前,通常我们需要先将数据集分为训练集和测试集。在分配训练集和测试集的时候,如果测试集的数据越小,对模型的泛化误差的估计将会越不准确。所以,在划分数据集的时候我们需要进行权衡。在实际应用中,基于整个数据集数据的大小,训练集数据和测试集数据的划分比例是6:4、7:3或8:2。对于庞大的数据可以使用9:1,甚至是99:1。我们可以直接使用sklearn提供的train_test_sp...

修炼之路 6万+

手写Socket Web服务器:深入HTTP协议底层原理

HTTP协议是Web通信的基石,其本质是一套严格定义的文本格式与状态交互规范。理解它需回归传输层——TCP连接建立、请求响应格式(如状态行、头/体分隔符\r\n\r\n)、字符编码与字节长度一致性等核心原理。这些知识直接决定CORS拦截、中文乱码、Content-Length错误等高频问题的排查效率。在现代框架封装日益厚重的今天,亲手用Socket实现一个可被Chrome识别的极简Web服务器,成为掌握Web运行机制最有效的实践路径。本文即以DebugLZQ经典案例为蓝本,还原从URI解析、DNS查询、So

weixin_40192258的博客 534

机器学习数据划分:训练集与测试集原理与实践

在机器学习中,数据划分是评估模型泛化能力的基础技术。其核心原理是通过分离训练集和测试集,防止模型在训练数据上过拟合,从而准确评估其处理新数据的能力。常用的随机划分、分层抽样等方法各有适用场景,需根据数据特性选择。正确实施数据划分能显著提升模型在生产环境中的可靠性,广泛应用于推荐系统、医疗诊断等领域。本文结合scikit-learn代码示例,详解如何避免数据泄露等常见陷阱,并探讨了大数据场景下的分布式划分方案。

weixin_33709219的博客 438

从零开始Cubemx配置STM32搭载freeRTOS以及lwip实现tcp网络通信(二)

Cubemx配置LWIP,实现网络通信

qq_30623327的博客 1万+

机器学习模型评估:训练集与测试集划分的最佳实践

在机器学习中,训练集与测试集的正确划分是模型评估的基础。其核心原理在于通过独立的数据集验证模型在未见数据上的泛化能力,防止数据泄漏导致的性能误判。技术实现上,常用随机划分(如scikit-learn的train_test_split)和时间序列划分等方法,同时需考虑类别不平衡问题(通过分层抽样解决)。从工程实践角度看,合理的划分比例、数据分布一致性检查以及避免特征工程中的数据泄漏都至关重要。这些技术在Kaggle竞赛、金融风控和医疗诊断等场景中广泛应用,直接影响模型上线后的真实表现。

weixin_33738578的博客 650

AI 技术新手入门与实战指南

仅仅能对话还不够,实际应用中,我们往往需要让 AI 处理特定的业务数据。比如,从日志文件中提取错误码,或者将非结构化的用户反馈整理成 JSON 格式。这时候,自定义输入和严格的结果验证就显得尤为重要。假设我们需要让 AI 分析一段服务器日志,并只返回错误的级别和简述。请分析以下日志片段,提取所有 ERROR 级别的信息。要求输出格式为 JSON 列表,包含 'timestamp' 和 'message' 两个字段。不要输出任何多余的解释文字。日志内容: {

2600_94936330的博客 2680

QOpenGL入门教程(二)—— 第一个QOpenGLWidget程序

终于到了实际操作的环节了,这一章我们要做的是: 创建OpenGL窗口 创建并编写着色器程序 为着色器程序装配顶点数据 启动渲染管线进行绘图 第一步:创建新项目 首先,我们使用Qt创建一个常规的QWidget项目,建议不要勾选ui设计器(个人习惯,笔者不太习惯于使用ui来设计) 第二步:创建QOpenGLWidget并实现三个虚函数 QOpenGLWidget Qt5.4之前,Qt可以通过一个QGLWidget类来创建OpenGL窗口,但由于opengl的发展,在5.4版本的时候,Qt提供

ItaLink 1万+

机器学习模型评估:训练集-测试集划分原理与实践

在机器学习中,模型评估是确保算法泛化能力的关键环节。训练集-测试集划分作为最基础的评估方法,其核心原理是通过数据分割模拟模型在未知数据上的表现。从技术实现来看,这种方法通过随机抽样将数据集分为训练子集(通常占60-80%)和测试子集(20-40%),其中训练集用于模型参数学习,测试集则作为独立验证集评估性能。在工程实践中,这种划分方式尤其适合大规模数据集和训练成本高的深度学习模型,能有效平衡评估可靠性与计算效率。通过scikit-learn的train_test_split函数,开发者可以便捷实现数据划分、

weixin_29781865的博客 378

QTabWidget动态标签页管理:从代码创建到UI设计的实战指南

本文深入探讨了QTabWidget动态标签页管理的实战技巧,涵盖从纯代码创建到UI设计器布局的两种核心方法。详细讲解了如何动态添加、插入、关闭标签页,并管理其内容与生命周期。文章还提供了标签页精细化控制、界面优化(如设置图标、样式表)以及构建简易多文档编辑器的进阶实战案例,帮助开发者灵活应对数据监控、多文档编辑等复杂界面需求。

omega的博客 865

机器学习模型评估:训练集与测试集划分最佳实践

在机器学习模型开发中,训练集和测试集的合理划分是评估模型泛化能力的基础。其核心原理是通过隔离测试数据模拟真实场景,避免数据泄露导致的评估偏差。从技术实现看,随机划分是最简单的方法,但在类别不平衡或时间序列数据等场景下,需要采用分层抽样或时间序列划分等策略。Scikit-learn库提供了train_test_split等工具实现这些方法,其中random_state参数确保实验可重复性。在实际工程中,划分比例需权衡数据集大小和模型复杂度,而交叉验证技术则能更充分利用小数据集。这些方法广泛应用于金融风控、医疗

weixin_30788619的博客 353

全志 T527_Android13 编译 [ 避坑必看 ]

Swap 概念: Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行。当输入编译命令make -j16 的时候,会有如下提示,这是官方建议通过减少编译线程来解决编译时消耗内存过大的问题。Android 13 系统的编译流程,编译一共分为两部分:内核编译与 Android 编译。

公众号:嵌入式分享 2111

影刀RPA验证码识别避坑指南:官方指令、Python ddddocr与第三方图鉴怎么选?

本文深度对比了影刀RPA验证码识别的三种方案:官方AI指令、Python ddddocr开源库和第三方图鉴服务。从识别率、成本、维护性等维度分析各方案优劣,提供实战选型建议和优化技巧,帮助技术决策者在自动化流程中高效解决验证码识别难题。

weixin_30790841的博客 471

机器学习数据划分:训练集、验证集与测试集的正确用法

在机器学习中,数据划分是保障模型泛化能力的基础环节。其核心原理源于统计学习理论中的经验风险最小化(ERM),旨在通过训练集学习规律、验证集指导超参调优、测试集无偏评估真实性能。若划分不当,极易引发过拟合或数据泄露,导致模型在生产环境中失效。尤其在风控、推荐、CTR预估等关键场景中,时间序列划分、分层抽样与交叉验证的选择,直接决定模型是否具备业务可用性。本文聚焦Data Science实践中最易出错的‘数据切分’环节,结合泛化(Generalization)、数据泄露(Data Leakage)两大热词,系统

weixin_33853827的博客 320

SAP FICO 中的 F-02 :概念、使用场景及案例解析

在 SAP FICO (财务会计与管理会计) 模块中,F-02 是一个用于录入总账凭证的事务代码。这个事务代码主要用于手动输入总账凭证,适用于各类财务交易,例如资产购入、费用支付、收入确认等。F-02 的重要性在于,它允许财务人员在 SAP 系统中创建凭证,并确保这些凭证能够正确影响总账账户。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2060

机器学习数据划分:训练集、验证集、测试集的核心原理与工程实践

在机器学习与深度学习项目中,数据集的科学划分是模型评估与泛化能力验证的基石。其核心原理在于通过分离训练、验证与测试数据,模拟模型从学习到应用的全过程,从而客观评估其从数据中学习通用规律而非记忆特定样本的能力。这一方法论的技术价值在于防止过拟合、实现无偏评估,并为超参数调优与模型选择提供可靠依据。无论是传统的统计学习模型,还是复杂的深度神经网络,合理的数据划分都是确保模型在真实场景中可靠工作的关键前置步骤。在实际工程实践中,开发者常需应对数据泄露、小样本划分、时序数据处理等挑战,并需结合交叉验证、分层抽样等技

weixin_28285943的博客 301

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

efm32 入门.pdf

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

python划分训练集和测试集_杨涛的Python机器学习3:单特征与多特征、训练集与测试集,杨桃...

本人优快云博客专栏:https://blog.youkuaiyun.com/yty_7Github地址:https://github.com/yot777/单特征与多特征在上一节标签和特征的示例中,我们使用的是标签和特征一一对应:特征(身高,以米为单位)标签A1.510B1.611C1.761D2.11E1.580F1.681事实上,在现实生活中,存在着大量的多个特征对应一个标签的情况,以我们熟知的线性规划...

weixin_39715834的博客 425

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: python 文本分析
下一篇: 学习朴素贝叶斯算法的5个简单步骤
DataCastle
博客等级 码龄10年 870粉丝 202原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值