训练,测试,验证拆分的Python。三套

时间:2019-11-27 19:50:06

标签: python pandas numpy machine-learning

有人提出了一种将数据集分成三组的解决方案。我想知道在这种情况下标签在哪里。或如何设置标签。

train, validate, test = np.split(df.sample(frac=1), [int(.6*len(df)), int(.8*len(df))])

2 个答案:

答案 0 :(得分:4)

我将根据评论回答问题:

使用此方法进行拆分:

DoWorkEventArgs

您将获得3个不同的对象,它们由train, validate, test = np.split(df.sample(frac=1), [int(.6*len(df)), int(.8*len(df))]) 的{​​{1}}的前60%数据组成,该数据对应于df的60%和80%之间的间隔最后20%对应于train中的80%-100%。标签在这些数据框中。

validate中,您传递了两个对象X和Y,这两个对象以前很可能是从原始数据集中拆分出来的,然后返回4个对象,其中2个对应于train,两个对应于test。请记住以下几点:首先将数据集拆分为testtrain_test_split,然后将这两个对象拆分为train和test。

如果使用independent variables,则要反过来,首先要将数据集分成3个对象,进行训练,验证和测试,然后将它们分别分成explained/target variable(通常称为X和np.split被称为Y。您正在执行相同的拆分,只是顺序相反。

但是,请记住,通过传递independent variables的索引,这意味着拆分不是随机执行的,而使用target variable则可以得到随机训练和测试子集。另一方面,np.split可以提供更大的灵活性,例如,正如您通过示例所证明的那样,可以创建两个以上的子集。

也许这会有所帮助! enter image description here

答案 1 :(得分:1)

尝试一下。将train_test_split之一的输出输入到第二个中作为输入

import numpy as np
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4)
X_test, X_validate, y_test, y_validate = train_test_split(X_test, y_test, test_size=0.5)

该函数将2个数组随机拆分为4个数组,而test_size确定分配给测试输出与序列的拆分的大小。输入y是构建机器学习模型的目标,输入X是模型的特征。如果要将它们组合在一起,则只需合并等效的X和y输出。