有人提出了一种将数据集划分为三组的方法。我想知道在这种情况下标签在哪里,或者如何设置标签。
train, validate, test = np.split(df.sample(frac=1), [int(.6*len(df)), int(.8*len(df))])
回答:
我将根据评论来回答这个问题:
使用这种划分方法:
train, validate, test = np.split(df.sample(frac=1), [int(.6*len(df)), int(.8*len(df))])
你会得到三个不同的对象,分别是从df
中取的前60%的数据用于train
,60%到80%之间的数据用于validate
,以及80%到100%的数据用于test
。标签包含在这些数据框中。
在train_test_split
中,你传递两个对象,X和Y,它们很可能是从原始数据集中预先分离出来的,并返回四个对象,两个对应于训练集,两个对应于测试集。请记住:你首先将数据集分成自变量
和解释/目标变量
,然后将这两个对象再分成训练集和测试集。
使用np.split
时,你采取了相反的步骤,你首先将数据集分成三个对象,train、validate和test,这些对象稍后需要分别再分成自变量
(通常称为X)和目标变量
(称为Y)。你进行的是相同的划分,只是顺序相反。
然而,请注意,通过为np.split
传递索引,这意味着划分不是随机进行的,而使用train_test_split
时,你会得到随机的训练和测试子集。另一方面,np.split
提供了更多的灵活性,例如,如你的例子所示,可以创建超过两个子集。