展开菜单
首页 精品内容 本月促销 装机必备 Windows macOS软件 IOS软件 Android AI PDF教程 专题
全部分类

当前位置:

首页 > 编程开发 > Scikit-learn怎么划分训练集和测试集_使用train_test_split分割数据

Scikit-learn怎么划分训练集和测试集_使用train_test_split分割数据

Scikit-learn数据划分实战:避开train_test_split的那些“坑” 话说回来,数据划分这事儿,看似是建模流程里最基础的一步,但偏偏是新手甚至有些经验的朋友最容易栽跟头的地方。一个不留神,模型指标看起来挺美,一上线就“见光死”。问题往往就出在数据划分这个源头。下面就来拆解几个最常见

Scikit-learn数据划分实战:避开train_test_split的那些“坑”

Scikit-learn怎么划分训练集和测试集_使用train_test_split分割数据

话说回来,数据划分这事儿,看似是建模流程里最基础的一步,但偏偏是新手甚至有些经验的朋友最容易栽跟头的地方。一个不留神,模型指标看起来挺美,一上线就“见光死”。问题往往就出在数据划分这个源头。下面就来拆解几个最常见的陷阱。

train_test_split 为什么分出来的数据比例总不对

你是不是也遇到过这种情况:明明设了test_size=0.2,结果测试集样本数却对不上总体的20%?或者干脆报错ValueError: test_size must be less than the number of samples

问题的根子,通常出在两个地方:一是忘了设置random_state,导致每次运行切分比例都在随机波动;二是误解了test_size参数的含义。这个参数默认是按比例切分的,比如test_size=0.2就是拿走20%的样本。只有当你传入一个整数(比如test_size=100)时,它才会按绝对条数来划分——前提是你得清楚总数据量足够,且这个数字合理。

除了比例问题,还有几个细节值得敲黑板:

  • 数据对齐是前提:划分前务必确认特征X和标签y的行数严丝合缝。否则,函数会静默地给你一个错位的划分,后续错误将难以追溯。
  • 分类任务记得“分层”:对于分类问题,加上stratify=y参数至关重要。它能确保训练集和测试集中各个类别的比例与原始数据集保持一致。不加的话,极端情况下可能导致某个类别在测试集中完全“消失”,模型自然学不会识别它。
  • “洗牌”开关要看场景shuffle=True是默认设置,适用于大多数独立同分布的数据。但如果你的数据本身带有顺序(比如按时间排列、或按类别排序),不关闭洗牌就会导致训练集全是前半段的数据,测试集全是后半段,模型根本无法学到泛化规律。

train_test_split 返回的四个变量顺序不能乱

这个函数的返回值顺序是固定的:X_train, X_test, y_train, y_test。千万别靠变量名去猜,或者试图只接收其中两个变量。

一个典型的错误是,想着“反正前两个返回的肯定是X”,于是写成X_train, X_test = train_test_split(X, y)。这会导致y的数据被错误地赋值给X_test,等到调用model.fit(X_train, y_train)时,就会抛出诸如ValueError: Expected 2D array, got 1D array instead这种令人困惑的报错。

记住这几个稳妥的写法:

  • 标准解包:一次接收四个变量:X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
  • 只需特征划分时:如果只想划分X(例如做无监督预处理),后两个变量可以用下划线占位:X_train, X_test, _, _ = train_test_split(X, y, test_size=0.2)
  • 避免索引取值:像train_test_split(...)[0]这种写法,既降低了代码可读性,也极容易出错,特别是后续调整参数顺序时,代码会直接崩溃。

和 cross_val_split 混用时容易漏掉独立测试集

这是概念混淆的重灾区。很多人用了cross_val_scoreGridSearchCV进行交叉验证后,看到平均得分不错,就以为模型已经验证完毕,直接在整个数据集上训练并宣称结果。这其实犯了一个根本性错误:交叉验证(CV)主要用于模型选择参数调优,而不是最终的性能评估。评估模型泛化能力,必须使用一个从头到尾都未曾参与过任何训练或验证过程的独立测试集。

正确的流程应该是这样的:

  • 第一步,切出“禁区”:先用train_test_split从原始数据中切分出最终的独立测试集(X_test/y_test),这部分数据后续绝对不能再碰。
  • 第二步,在“训练区”内折腾:用剩下的数据(训练集)进行交叉验证、网格搜索等所有调参操作。
  • 第三步,最终检验:用找到的最优参数,在完整的训练集上重新训练模型,最后一步才用预留的那个独立测试集进行最终预测和评估。

如果跳过了第一步,直接在全量数据上做CV,就意味着每一条数据都曾在某一次折迭中当过“测试集”,模型其实已经“偷看”过了所有数据,失去了真正的未知性。这样得到的评估指标必然是乐观的,上线后效果打折也就不足为奇了。通常,train_test_splittest_size可以设在0.2到0.3之间,用于预留最终测试集;CV则在这个训练集内部再进行划分,两者职责分明,互不冲突。

时间序列数据不能直接用 train_test_split

对于股价、日志流、传感器读数这类带有严格时间先后顺序的数据,使用默认的随机划分(shuffle=True)会引入致命的数据泄露:模型可能会用“未来”的信息来预测“过去”,这在实际业务中是毫无意义的,只会得到虚假的高精度。

处理时间序列,正确的工具是:

  • 使用专用拆分器:Scikit-learn提供了TimeSeriesSplit,它能严格按照时间顺序进行划分,确保每一折的训练集数据都早于测试集数据。
  • 手动按时间点切割:比如,将前80%时间段的数据作为训练集,后20%作为测试集。关键点在于,如果使用train_test_split来实现,必须显式设置shuffle=False,因为它的默认值是True
  • 保持业务逻辑一致:只要你的数据带有时间戳,且预测任务依赖于时间上的因果关系(比如用户次日留存预测),就必须遵循按时间划分的原则,图省事的随机划分只会埋下隐患。

最后,不妨再回头审视一下你的代码。stratifyshuffle这两个参数,虽然都有看似合理的默认值,但在特定的数据场景下,它们恰恰是许多隐蔽Bug的源头。多花一分钟检查它们,或许就能省下后面一整天调试的时间。

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
编程开发 AI
相关文章 更多
精品专题 更多
本月促销

正软商城本月促销专区,汇集办公、设计、安全、影音、系统工具及AI软件等正版软件优惠活动,提供限时折扣、特价授权和优惠购买信息,活动库存及价格以页面实时展示为准。

装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
灵活计算器
灵活计算器

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

图几
图几

图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

Menuist
Menuist

Menuist 是一款面向 macOS 的 Finder 右键菜单增强工具,主要用来补充新建文件、快捷导航等常用操作,让日常文件管理和访问路径时更高效、更顺手。

Mole
Mole

Mole 是一款专为 Mac 设计的深度清理优化工具,涵盖缓存清理、应用管理及实时状态监控等功能。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

WINDOWS 更多
Windows 10
Windows 10

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

傲梅轻松备份
傲梅轻松备份

傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Wise Folder Hider Pro
Wise Folder Hider Pro

Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

PinStack
PinStack

PinStack是一款轻量级的Windows平台剪贴板管理工具,优化您的剪贴板使用体验。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

Seer
Seer

Seer是一款在Win平台下的空格键功能增强效率工具,只需轻敲空格键,就能预览几乎任何格式的文件。它更适合把零散的小功能集中起来使用,处理高频琐碎任务时会更省事。