有人提出了一种将数据集分成三组的解决方案。我想知道这种情况下的标签在哪里。或者如何设置标签。
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))])
您将获得 3 个不同的对象,其中包含来自 train
的 df
的前 60% 数据,这些数据对应于 60% 到 80% 之间的区间对于 validate
而言,最后 20% 对应于 test
中的 80%-100%。标签位于这些数据帧内。
在 train_test_split
中,您传递两个对象 X 和 Y,这两个对象很可能是之前从原始数据集中分割出来的,并返回 4 个对象,其中 2 个对应于训练,两个对应于测试。请记住这一点:您首先将数据集拆分为独立变量
和解释/目标变量
,然后将这两个对象拆分为训练和测试。
使用 np.split
则相反,您首先将数据集拆分为 3 个对象,进行训练、验证和测试,稍后需要将它们单独拆分为独立变量
通常称为 X,目标变量
称为 Y。您正在执行相同的拆分,只是顺序相反。
但是,请记住,通过传递 np.split
的索引意味着拆分不是随机执行的,而使用 train_test_split
你会得到随机的训练和测试子集。另一方面,np.split 允许更大的灵 active ,例如,正如您用示例证明的那样,创建超过 2 个子集。
关于python - 训练、测试、验证拆分 Python。三件套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59077550/