9 数据集处理之数据分割
系列进度
Scikit-learn 入门 · 第 9 / 24 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
数据分割的核心是模拟新数据。训练集用于学习,测试集用于最后检查,二者混用会让评估结果虚高。
分类任务我会优先检查类别比例,必要时使用分层划分。小数据集里,一次随机划分可能让少数类直接消失。
在机器学习中,将数据分割成训练集和测试集是一个至关重要的步骤。这一过程有利于评估模型在新数据上的泛化能力。本节将详细介绍 Scikit-Learn 中如何进行数据分割,并结合案例进行说明。
3.3 数据分割
3.3.1 数据分割的目的
使用 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 入门 系列第 9 / 24 篇,适合正在学习Scikit-learn 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇Scikit-learn 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读