scikitlearn中的分层训练/验证/测试拆分

2024-05-06 12:29:33 发布

您现在位置:Python中文网/ 问答频道 /正文

这里已经描述了如何通过train_test_split(Stratified Train/Test-split in scikit-learn)在scikit中进行分层训练/测试拆分,以及如何通过np.split(How to split data into 3 sets (train, validation and test)?)进行随机训练/验证/测试拆分。但是,如何进行分层训练/验证/测试分割呢。

在进行分层(在类标签上)训练/验证/测试拆分时,我想到的最接近的近似值如下,但我怀疑有更好的方法可以通过一个函数调用或更准确的方式实现这一点:

假设我们要进行60/20/20训练/验证/测试拆分,那么我当前的方法是先进行60/40分层拆分,然后对前40个进行50/50分层拆分,最终得到60/20/20分层拆分。

from sklearn.cross_validation import train_test_split
SEED = 2000
x_train, x_validation_and_test, y_train, y_validation_and_test = train_test_split(x, y, test_size=.4, random_state=SEED)
x_validation, x_test, y_validation, y_test = train_test_split(x_validation_and_test, y_validation_and_test, test_size=.5, random_state=SEED)

如果我的方法正确和/或你有更好的方法,请回来。

谢谢你


Tags: and方法testsize分层trainrandomscikit