Python数据分析中的训练集、验证集、测试集

本文介绍了Python数据分析中训练集、验证集和测试集的概念及其重要性。训练集用于构建模型,验证集用于模型调优和防止过拟合,而测试集则在模型训练完成后用于评估模型的泛化能力。通常采用6:2:2的比例划分数据集,并使用sklearn.model_selection的train_test_split函数进行切分。理解这三者的关系有助于提高模型的预测性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【小白从小学Python、C、Java】

【Python全国计算机等级考试】

【Python数据分析考试必会题】

● 标题与摘要

Python数据分析中的

训练集、验证集、测试集

● 选择题

以下说法错误的是:

A 训练集用于训练模型

B 验证集与测试集作用类似

C 验证集通常配合训练集进行超参数调优和模型评估

D 测试集通常在训练后测试模型的泛化能力

● 问题解析

1.三种集合的概念。数据集在训练模型时一般被划分为训练集、验证集、测试集。机器学习的过程是:

首先用训练集训练出模型,然后用验证集验证模型,根据情况不断调整模型,选出其中最优的模型,之后记录最好的模型的超参数,最后用测试集评估最终的模型。

(1)训练集:用来训练模型。

(2)验证集:用于调整模型的超参数,用于对模型的能力进行初步评估。通常用来在模型迭代训练时,用于验证当前模型泛化能力,最终决定是否停止继续训练。验证集来自训练集的再划分,因此验证集与训练集最好是不交叠的,这样选择模型的时候,才可以避免被数据交叠的因素干扰。同时,验证集在训练过程中还可以监督模型是否发生过拟合,当验证集随着迭代次数增加,反而训练结果表现越来越差时,就表示发生了过拟合,应当停止迭代,所以验证集也可以用来判断何时停止训练。

(3)测试集:用来评估模最终模型的泛化能力。但测试集不能参与调参过程,否则就无法保证模型在未观测的数据上表现的可靠性。

2.理解三种集合。打个比方,使得读者更好的理解:训练集、验证集、测试集

比喻:我们可以认为训练的结果是高考考出好成绩:

(1)训练集可以认为是平时的作业以及测验;

(2)验证集可以认为是高考前的模拟考试;

(3)测试集就是最后高考的卷子。

3.三种集合的比例。对于训练集、验证集、测试集的划分比例一般为训练集:验证集:测试集=6:2:2。

4.切分三种集合的函数。可以使用sklearn.model_selection包中的train_test_split()函数,函数功能是将原始数据按照比例切分为训练集和测试集。

(1)train_test_split()函数形式为:

train_test_split(arrays,test_size=None,train_size=None,random_state=None,shuffle=True,stratify=None)

(2)train_test_split()函数的各参数的含义是:

arrays表示等长的列表、数组或者dataframe;

test_size表示测试集大小在0和1之间,默认0.25 ;

train_size表示训练集集大小在0和1之间,默认1 ;

random_state代表传递一个int值,之后在多个函数调用时可以生成用于复制的输出; shuffle表示拆分前是否进行洗牌;

strafity表示是否对数据进行分层。

(3)划分训练集与测试集例子:如图1所示。

5.切分三种集合举例。将数据集划分为训练集、验证集、测试集,首先通过train,val_test=train_test_split(data,test_size=0.4),将数据集划分为训练集与剩余数据,比例为训练集:剩余数据=6:4,然后通过val,test=train_test_split(val_test,test_size=0.5),将剩余数据划分为测试集与验证集,数据比例为测试集:验证集=5:5,所以最终训练集:验证集:测试集=6:2:2,详见图2。

● 附图 

图1 将数据集划分为训练集与测试集

 

图2 将数据集划分为训练集、验证集、测试集

● 附图代码

import numpy as np

from sklearn.model_selection import train_test_split

#X为数据集,生成10以内的数字,为5行2列

X=np.arange(20).reshape((10,2))

print("X:\n",X)

X_train,X_test=train_test_split(X,test_size=0.33,random_state=20)

print("X_train:\n",X_train)#训练集数据

print("X_test:\n",X_test)#测试集数据

import pandas as pd

import random

#生成10行2列的数据集

data=np.arange(20).reshape((10, 2))

print(data)

train,val_test=train_test_split(data,test_size=0.4)

val,test=train_test_split(val_test,test_size=0.5)

print("train:\n",train)#训练集

print("test:\n",test)#测试集

print("val:\n",val)#验证集

 

● 正确答案

B

欢迎大家转发,一起传播知识和正能量,帮助到更多人。期待大家提出宝贵改进建议,互相交流,收获更大。辛苦大家转发时注明出处(也是咱们公益编程交流群的入口网址),刘经纬老师共享知识相关文件下载地址为:http://liujingwei.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘经纬老师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值