繁体   English   中英

如何在不使用和拆分测试集的情况下将我的数据集拆分为训练和验证?

[英]How can i split my dataset into training and validation with no using and spliting test set?

我知道这对于训练和验证集拆分是错误的,但你可以在这里理解我真正需要的东西。 我只想使用训练集和验证集。 我不需要任何测试集

#Data Split
from sklearn.model_selection import train_test_split 

x_train,x_val,y_train,y_val=train_test_split(x,y,test_size=0.976,random_state=0)

测试是验证;

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0)

x_testy_test是您的验证测试或测试集。 他们是一样的。 这是总xy样本的一小部分,用于验证您的 model 尚未经过训练的数据。

通过使用random_state ,您可以获得可重现的结果。 换句话说,每次运行脚本时都会得到相同的集合。

术语validation集和test集有时可互换使用,有时表示略有不同。 @Sy Ker 的观点是正确的:您使用的sklearn模块确实为您提供了一个验证集,尽管模块中使用的术语是test 实际上,您所做的是获取用于训练的数据和用于评估的数据,无论使用什么术语。 我添加这个答案是为了回答您实际上可能需要某种形式的测试集。

使用test_train_split将为您提供一对允许您训练 model 的集合(在百分比参数中指定比例 - 通常应该为 10-25% 左右,以确保它是一个有代表性的子样本)。 但我建议更广泛地考虑这个过程。

只需使用数据集底部的y%行,就可以简单地(并且很可能不正确地)拆分数据以用于测试和 model 评估。 如果正在进行标准化/标准化,请确保它在测试集上进行训练并将其应用于评估集,以便对两者应用相同的处理。

sklearn和其他人也可以非常简单地进行交叉验证,在这种情况下,应该对“验证”集有所不同。 交叉验证将获取您的一部分数据并将其细分为更小的组,以进行重复的测试和培训。 在这种情况下,您可能会从train_test_split中的数据拆分开始,并将在这种情况下设置的“测试”保留为完全保留——这意味着交叉验证过程从不使用(或“看到”)数据在它的测试/训练过程中。

然后,您从test_train_split过程中获得的测试集可以作为一组很好的数据,用作测试 model 如何针对从未见过的数据执行的测试。 您可能会看到这被称为“holdout”集,或者再次称为“test”和/或“validation”的某个版本。

此链接对交叉验证和保留集进行了快速但直观的描述。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM