郭震 AI公众号:郭震AI

9 数据集处理之数据分割

发布日期:

最近更新:

分类: Scikit

预计阅读: 3 分钟

阅读次数: 0

系列进度

Scikit-learn 入门 · 第 9 / 24

预计阅读3 分钟
结构重点7 个
图文要点6 张
正文规模1.2k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 7 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

数据分割流程图查看大图
数据分割流程图

数据分割的核心是模拟新数据。训练集用于学习,测试集用于最后检查,二者混用会让评估结果虚高。

数据分割核对图查看大图
数据分割核对图

分类任务我会优先检查类别比例,必要时使用分层划分。小数据集里,一次随机划分可能让少数类直接消失。

在机器学习中,将数据分割成训练集和测试集是一个至关重要的步骤。这一过程有利于评估模型在新数据上的泛化能力。本节将详细介绍 Scikit-Learn 中如何进行数据分割,并结合案例进行说明。

3.3 数据分割

3.3.1 数据分割的目的

Scikit-Learn数据分割判断卡查看大图
ScikitLearn数据分割判断卡

使用 Scikit-Learn 分割数据时,先确认测试集比例、随机种子、类别分布和是否存在时间泄漏。

数据分割的主要目的是确保模型在未见过的数据上也能表现良好。通常,我们将数据集分为两部分:

  • 训练集:用于训练模型。
  • 测试集:用于评估模型的性能。

通过这种分割方法,我们可以防止模型记住训练数据,从而导致过拟合。

3.3.2 使用 Scikit-Learn 进行数据分割

Scikit-Learn 提供了一个非常实用的 train_test_split 函数,可以快速将数据分割为训练集和测试集。下面是 train_test_split 的基本使用方法:

from sklearn.model_selection import train_test_split

# 假设我们有如下数据集
X = [[1], [2], [3], [4], [5]]
y = [0, 1, 0, 1, 0]

# 使用 train_test_split 函数进行数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

print("训练集特征:", X_train)
print("测试集特征:", X_test)
print("训练集标签:", y_train)
print("测试集标签:", y_test)

代码解析:

  • X 表示特征数据集,y 表示标签数据集。
  • test_size=0.2 表示将 20% 的数据用作测试集,剩余的 80% 用作训练集。
  • random_state=42 保证了每次运行时数据分割的随机性一致性,以便重现结果。

3.3.3 多分类数据的分割

对于多分类数据集,train_test_split 依然适用。例如,我们使用 Iris 数据集来进行演示:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 加载 Iris 数据集
iris = load_iris()
X, y = iris.data, iris.target

# 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

print("训练集样本数:", len(X_train))
print("测试集样本数:", len(X_test))

3.3.4 分层抽样

在某些情况下,尤其是处理不平衡分类问题时,可能需要使用分层抽样。train_test_split 中的 stratify 参数可以帮助我们保持每个类别的比例。

# 分层抽样
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=y)

print("训练集标签分布:", np.bincount(y_train))
print("测试集标签分布:", np.bincount(y_test))

通过指定 stratify=y,我们确保训练集和测试集中每个类的样本比例保持一致。

3.3.5 注意事项

在数据分割过程中,请注意以下几点:

  • 确保数据分割的随机性和一致性,可以使用 random_state
  • 在模型评估时,测试集应保持未使用状态,避免数据泄漏。
  • 对于不平衡的数据集,可考虑使用分层抽样技术。
数据集处理之数据分割应用复盘卡查看大图
数据集处理之数据分割应用复盘卡

复习《数据集处理之数据分割》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。

数据集处理之数据分割应用检查卡查看大图
数据集处理之数据分割应用检查卡

练习《数据集处理之数据分割》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。

小结

在本节中,我们学习了如何使用 Scikit-Learn 进行数据分割,并了解了分层抽样的必要性。数据分割是机器学习工作流中一个重要的过程,它为后续模型的评估奠定了基础。在下一节中,我们将研究 特征选择,深入探讨如何选取对模型有重要影响的特征。 Scikit-Learn阅读地图卡

阅读《数据集处理之数据分割》前,可以先用配图确认主线;读完后再检查哪些步骤能直接操作,哪些还需要补资料。

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

数据集处理之数据分割适合谁读?

这是 Scikit-learn 入门 系列第 9 / 24 篇,适合正在学习Scikit-learn 入门,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇Scikit-learn 入门教程要多久?

按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...