将分区数据集拆分为训练和测试(训练数据每个类有 200 个示例)

Posted

技术标签:

【中文标题】将分区数据集拆分为训练和测试(训练数据每个类有 200 个示例)【英文标题】:Split partition dataset into training and test (The training data has 200 examples of each class) 【发布时间】:2018-01-01 15:18:39 【问题描述】:

我有一个 5 类数据。每个类中大约有 1000、1200、1500、1900、2000 个样本。我想在训练数据中有每个类的 200 个示例。其他样本将是测试数据。也就是说,训练数据将由每个类别中的 [200, 200, 200, 200, 200] 个样本组成,测试数据将由每个类别中的 [800, 1000, 1300, 1700, 1800] 个样本组成。

我们如何在 Python 中做到这一点?在 Python 中是否有任何预定义的方法/包来执行此操作?

其他例子

train_test_split(data, labels, train_size=0.0042) Label Number Total Samples Train Samples Test Samples 1 6631 33 6598 2 18649 89 18560 3 2099 6 2093 4 3064 11 3053 5 1345 5 1340 6 5029 26 5003 7 1330 3 1327 8 3682 21 3661 9 947 6 941 Total 42776 200 42576

train_test_split(data, labels, train_size=200) Label Number Total Samples Train Samples Test Samples 1 6631 33 6598 2 18649 89 18560 3 2099 6 2093 4 3064 11 3053 5 1345 5 1340 6 5029 26 5003 7 1330 3 1327 8 3682 21 3661 9 947 6 941 Total 42776 200 42576

所以,我希望它是这样的:

Label Number Total Samples Train Samples Test Samples 1 6631 200 6431 2 18649 200 18449 3 2099 200 1899 4 3064 200 2864 5 1345 200 1145 6 5029 200 4829 7 1330 200 1130 8 3682 200 3482 9 947 200 747 Total 42776 1800 40976

【问题讨论】:

你到现在都做了什么? 我用谷歌搜索,但找不到有效的解决方案。 train_test_split 函数中的train_size 参数不是解决方案。如果int 是,则自动计算百分比。 如果int自动计算百分比是什么意思? 【参考方案1】:

您可以将sklearn.model_selection.train_test_splittrain_size 参数设置为一个整数值,在您的情况下,该值表示训练样本的绝对数量200。如果它是一个浮点数,它应该介于 0.0 到 1.0 之间,以表示您要考虑的训练样本的比例。例如,0.8 表示 80%。

【讨论】:

如果参数train_size为200,则每类训练数据的元素个数分别为[26,32,39,50,53]。训练数据中的样本总数是 200。我不想要这个。每个类包含 200 个样本,因此您在训练数据中总共有 1000 个样本。 那么,如果你把 1000 写成train_size,它不会是 200,而是 200 左右,它是否相等真的很重要吗? 很抱歉我不能告诉你我的问题。我在问题中添加了一个详细的示例。我希望它可以解释。 您的问题现在更清楚了。我只能想到首先创建 5 个单独的 DataFrame,每个 DataFrame 包含 1 个类/标签的样本。使用 train_size = 200 对它们中的每一个应用 train_test_split。这将为您提供 5 个训练集和 5 个测试集,您可以通过 Python 组合它们以获得单个训练和测试集。

以上是关于将分区数据集拆分为训练和测试(训练数据每个类有 200 个示例)的主要内容,如果未能解决你的问题,请参考以下文章

使用 tensorflow 将数据集拆分为训练和测试

R:如何将数据框拆分为训练集、验证集和测试集?

试图将我的数据框拆分为具有代表性的训练集和测试集

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

将图像数据集拆分为训练测试数据集

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