拆分训练测试数据集将相似的值保持在一起

Posted

技术标签:

【中文标题】拆分训练测试数据集将相似的值保持在一起【英文标题】:Split Train Test Data sets keeping like values together 【发布时间】:2021-01-17 15:30:01 【问题描述】:

我有一个带有 ID 的动物类型数据集,我想将所述数据集分解为测试/训练数据集。我还想将相应动物的所有 ID 保留在训练或测试数据集中。下面是一个数据示例,其中随机训练/测试拆分比率为 80/20。

Animal  ID  Test/Train
CAT 1   TRAIN
CAT 1   TRAIN
CAT 2   TRAIN
CAT 2   TRAIN
CAT 3   TRAIN
CAT 3   TEST
CAT 4   TRAIN
CAT 4   TRAIN
CAT 5   TEST
CAT 5   TRAIN
DOG 1   TRAIN
DOG 1   TRAIN
DOG 2   TRAIN
DOG 2   TRAIN
DOG 3   TRAIN
DOG 3   TRAIN
DOG 4   TEST
DOG 4   TEST
DOG 5   TRAIN
DOG 5   TRAIN

请注意 ID 为 3 和 ID 5 的 CAT 如何存在于训练和测试数据集中。 scikit-learn train_test_split 中是否有一个函数能够在保持测试比率的同时将所有相似值保留在同一训练/测试数据集中的列中?因此,如果 ID 为 3 的 CAT 有一个值被标记为训练数据,那么任何其他具有 CAT 和 ID 3 的记录也将被标记为训练数据。

【问题讨论】:

【参考方案1】:

如果是,您是否将分层参数保留为是,然后将其删除并检查。

【讨论】:

嗨阿迪亚!谢谢你提到这一点。我认为分层保持您试图预测的训练和测试数据集之间的字段比率(即,如果数据在二进制字段上按 75/25 拆分,训练和测试数据集将保持该比率)。在我的示例中,我想确保相应动物的所有 ID 都存在于训练或测试数据集中,并且在两个数据集中都找不到,与预测的字段无关。

以上是关于拆分训练测试数据集将相似的值保持在一起的主要内容,如果未能解决你的问题,请参考以下文章

如何按百分比将 CSV 数据集拆分为训练集和测试集,并将拆分后的数据集与 pandas 一起保存到本地文件夹中? [复制]

数据集拆分:训练集、验证集、测试集

将主数据目录拆分为训练/验证/测试集

如何将训练数据集拆分为训练,验证和测试数据集?

R语言使用caret包的predict函数对模型在测试集上的表现进行推理和预测predict函数对测试数据集进行数据预处理(和训练集的初始方式保持一致):缺失值填充数值变量最小最大缩放独热编码

如何将数据集 (csv) 拆分为训练和测试数据