41、Python机器学习的数据集的划分【用Python进行AI数据分析进阶教程】

部署运行你感兴趣的模型镜像

用Python进行AI数据分析进阶教程41:

Python机器学习的数据集的划分


关键词:训练集、验证集、测试集、数据分布、交叉验证

摘要:本文介绍了在Python机器学习中划分数据集的关键方法和注意事项。数据集通常被划分为训练集、验证集和测试集,分别用于模型训练、超参数调优和最终性能评估。为确保模型泛化能力,需保证各数据集间的数据分布一致且相互独立。随机划分和设置随机种子(random_state)有助于提升划分的可重复性和数据代表性。当数据量较小时,推荐使用交叉验证以提升模型训练效果。示例代码展示了如何使用scikit-learn库中的train_test_split函数进行分层抽样,并按60%、20%、20%的比例划分三个数据集。文中还强调了测试集不能参与模型训练或调参,以避免过拟合并确保客观评估结果。

👉 欢迎订阅🔗
《用Python进行AI数据分析进阶教程》专栏
《AI大模型应用实践进阶教程》专栏
《Python编程知识集锦》专栏
《字节跳动旗下AI制作抖音视频》专栏
《智能辅助驾驶》专栏
《工具软件及IT技术集锦》专栏


在 Python 机器学习中,将数据集划分为训练集、验证集和测试集是一个重要的步骤,有助于评估和优化模型性能。下面详细介绍各数据集的划分、关键点、注意点,并给出示例。

一、数据集划分概述

  • 训练集(Training Set):用于模型的训练,模型通过学习训练集中的数据来调整自身的参数。
  • 验证集(Validation Set):用于在训练过程中评估模型的性能,帮助我们调整模型的超参数,防止过拟合。
  • 测试集(Test Set)用于最终评估模型的泛化能力,在模型训练和调优完成后使用,不能用于模型的训练和超参数调整。

1、训练集

  • 数据代表性训练集应尽可能代表整个数据集的特征分布,这样模型才能学习到数据的普遍规律。
  • 数据量通常占总数据集的大部分,一般为 60% - 80%。

2、验证集

  • 超参数调整验证集的主要作用是帮助我们选择合适的超参数,如学习率、正则化参数等。
  • 独立于训练集验证集的数据不能与训练集有重叠,否则会导致模型在验证集上的评估结果过于乐观,无法反映模型的真实性能。

3、测试集

  • 最终评估测试集用于评估模型在未见过的数据上的性能,是对模型泛化能力的最终检验。
  • 独立于训练集和验证集测试集的数据不能参与模型的训练和超参数调整,以确保评估结果的客观性。

二、数据分布一致性

训练集、验证集和测试集的数据分布应保持一致,特别是在处理分类问题时,各类别的比例应相近。否则,模型可能会偏向于数据量较多的类别,导致泛化能力下降。

1、随机划分

在划分数据集时,应采用随机划分的方式,避免数据的顺序对划分结果产生影响。可以通过设置随机种子来保证划分结果的可重复性。

2、数据量较小的情况

当数据集较小时,使用验证集可能会导致训练集的数据量不足,影响模型的训练效果。此时,可以采用交叉验证的方法来代替验证集。

3、示例代码

Python脚本

# 假设 new_data 是新的数据
# 使用 pandas 的 read_csv 函数从 'new_data.csv' 文件中读取新的数据,并将其存储在 new_data 变量中
new_data = pd.read_csv('new_data.csv')

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data  # 特征矩阵
y = iris.target  # 目标变量
# 第一步:将数据集划分为训练集和临时集(包含验证集和测试集)# test_size=0.4 表示将 40% 的数据作为临时集# random_state=42 用于设置随机种子,保证每次划分的结果一致
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42)
# 第二步:将临时集划分为验证集和测试集# test_size=0.5 表示将临时集的 50% 作为测试集,即总数据集的 20%# 此时,验证集也占总数据集的 20%
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)
# 打印各数据集的大小
print(f"训练集大小: {len(X_train)}")
print(f"验证集大小: {len(X_val)}")
print(f"测试集大小: {len(X_test)}")

输出 / 打印结果及注释

鸢尾花数据集共有 150 个样本,按照上述代码的划分方式,训练集占 60%,验证集和测试集各占 20%。

plaintext

训练集大小: 90

验证集大小: 30

测试集大小: 30

  • 训练集大小: 90:表示训练集包含 90 个样本,占总样本数 150 的 60%,用于模型的训练。
  • 验证集大小: 30:表示验证集包含 30 个样本,占总样本数的 20%,用于在模型训练过程中调整超参数,评估模型性能。
  • 测试集大小: 30:表示测试集包含 30 个样本,占总样本数的 20%,用于在模型训练和调优完成后,对模型的泛化能力进行最终评估。

注意事项

  • 要确保 new_data.csv 文件存在于当前工作目录中,否则 pd.read_csv('new_data.csv') 会报错。
  • 如果想要每次运行代码时数据集划分结果保持一致,务必设置 random_state 参数。

代码解释

  • 加载数据集使用 load_iris 函数加载鸢尾花数据集。
  • 第一次划分将数据集划分为训练集和临时集,其中临时集包含验证集和测试集。
  • 第二次划分将临时集划分为验证集和测试集。
  • 打印结果打印各数据集的大小,验证划分结果。

通过以上步骤,我们成功地将数据集划分为训练集、验证集和测试集,并且保证了各数据集之间的独立性。

——The END——


🔗 欢迎订阅专栏

序号专栏名称说明
1用Python进行AI数据分析进阶教程《用Python进行AI数据分析进阶教程》专栏
2AI大模型应用实践进阶教程《AI大模型应用实践进阶教程》专栏
3Python编程知识集锦《Python编程知识集锦》专栏
4字节跳动旗下AI制作抖音视频《字节跳动旗下AI制作抖音视频》专栏
5智能辅助驾驶《智能辅助驾驶》专栏
6工具软件及IT技术集锦《工具软件及IT技术集锦》专栏

👉 关注我 @理工男大辉郎 获取实时更新

欢迎关注、收藏或转发。
敬请关注 我的
微信搜索公众号:cnFuJH
优快云博客:理工男大辉郎
抖音号:31580422589

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

理工男大辉郎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值