【第一章:人工智能基础】02.数据处理及可视化-(2)数据集划分

第一章 人工智能基础

第二部分:数据处理及可视化

第二节:数据集划分

内容:训练集、验证集与测试集的划分方法及其注意事项


一、为什么要划分数据集?

在训练人工智能模型的过程中,我们的目标并不仅是让模型“记住”已有数据,而是希望它能学到规律,准确预测未来的未知数据。为了做到这一点,我们需要将原始数据分成几个部分:

  • 训练集(Training Set):用于让模型“学习”。

  • 验证集(Validation Set):用于调试模型,例如选择参数、调整结构。

  • 测试集(Test Set):用于最后检验模型是否真的“学会了”,评估它在新数据上的表现。

这种划分能帮助我们判断模型有没有“过拟合”(即在训练集上表现很好,但在新数据上很差)。


二、数据集的划分方法
1. 简单随机划分(Hold-Out法)

最基本的方法是:将原始数据随机按一定比例划分,例如:

  • 训练集占 70%

  • 验证集占 15%

  • 测试集占 15%

这样模型就能在训练集上学习,在验证集上调参,在测试集上评估最终效果。

from sklearn.model_selection import train_test_split

# 第一次划分:训练集 vs 临时集
train_data, temp_data = train_test_split(data, test_size=0.3, random_state=42)

# 第二次划分:临时集分为验证集和测试集
val_data, test_data = train_test_split(temp_data, test_size=0.5, random_state=42)

注意:random_state 用于确保划分结果可复现。


2. K 折交叉验证(K-Fold Cross Validation)

【漫话机器学习系列】268. K 折交叉验证(K-Fold Cross-Validation)_k折交叉验证-优快云博客

当数据量不大时,为了充分利用每一条数据,我们可以使用 K 折交叉验证。

  • 将数据平均分为 K 份(如 K=5),每次选其中 1 份作验证集,剩下的 4 份作训练集。

  • 重复 K 次,最终取平均性能作为模型表现。

优点:稳定、数据利用率高。
缺点:计算量大,不适合大规模数据或深度学习模型。

from sklearn.model_selection import KFold

kf = KFold(n_splits=5, shuffle=True, random_state=42)
for train_idx, val_idx in kf.split(X):
    X_train, X_val = X[train_idx], X[val_idx]

3. 留一交叉验证(Leave-One-Out)
  • 每次只留一个样本当验证集,其余都用于训练。

  • 适合小样本数据集。

  • 非常耗时,不适合大数据场景。


4. 时间序列划分

如果数据有时间顺序(如股票价格、传感器数据),就不能打乱顺序,而应按时间划分:

  • 前 60% 作为训练集

  • 中间 20% 为验证集

  • 最后 20% 为测试集

目的是保证未来数据不会“泄漏”到过去。


三、划分数据时的注意事项
1. 保持类别比例一致(分类问题)

在分类任务中,某些类别的数据量可能很少。如果随机划分,可能导致某个子集完全没有某些类别。

应使用分层抽样(stratified sampling),保证每个子集中的各类别比例与原始数据相同。

train_data, test_data = train_test_split(data, test_size=0.2, stratify=data['label'])

2. 切勿泄漏测试数据
  • 测试集必须是模型从未见过的数据

  • 不能在训练过程中使用测试集结果去调整模型或参数。

  • 所有参数调节、模型选择必须只基于训练集和验证集完成。


3. 每个子集要覆盖代表性特征

如果数据有多个来源、场景或类型(例如多地采集的传感器数据),划分时要确保每个子集中都包含这些不同的特征,否则模型在某些场景下可能表现很差。


四、常见数据集划分比例
用途占比(推荐)是否用于训练模型是否用于调参是否用于模型最终评估
训练集60%~80%✅ 是✅ 是❌ 否
验证集10%~20%❌ 否✅ 是❌ 否
测试集10%~20%❌ 否❌ 否✅ 是

五、总结图示
原始数据集
     ↓
-----------------------------
|      训练集(用于训练)     |
|---------------------------|
|      验证集(调参用)      |
|---------------------------|
|      测试集(最终评估)    |
-----------------------------

六、小结要点
  • 训练集是“教模型学习”的数据;

  • 验证集是“帮模型变聪明”的工具;

  • 测试集是“考验模型水平”的最终试卷;

  • 划分要科学、合理、避免数据泄漏;

  • 分类问题需注意类别比例;

  • 时间序列数据不能打乱划分顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值