这里已经描述了如何通过 train_test_split 在 scikit 中进行分层训练/测试拆分( scikit-learn 中的 Stratified Train/Test-split)以及如何通过 np.split 进行随机训练/验证/测试拆分的描述(How将数据分成 3 组(训练、验证和测试)?)。但是如何进行分层训练/验证/测试拆分。
进行分层(在类标签上)训练/验证/测试拆分时想到的最接近的近似值如下,但我怀疑有更好的方法可以通过一个函数调用或更准确的方式实现这一点:
假设我们要进行 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)
如果我的方法正确和/或您有更好的方法,请回来。
谢谢