【发布时间】:2019-10-11 05:21:26
【问题描述】:
我有一个如下所示的数据框,我想使用 order_id.Each 对应该将每个客户数据分成三个桶的数据进行采样,分别为 train(70%)、validation(15%) 和 test(15%)客户应该出现在所有三个存储桶中。每个客户的 order_id 计数和项目可能不同
数据框:
Customer Orderid item_name
A 1 orange
A 1 apple
A 1 banana
A 2 apple
A 2 carrot
A 3 orange
A 4 grape
A 4 watermelon
A 4 banana
B 1 pineapple
B 2 banana
B 3 papaya
B 3 Lime
采样后的所有三个数据集(train、validation 和 test)应该包含相同数量的客户,并且来自验证和 test 的项目应该是 train 的子集。
预期结果:
train: should contain all customers and all item_names (70% of complete data)
train:
customer item
A orange
A apple
A banana
A carrot
A grape
A watermelon
B pinepple
B banana
B papaya
B Lime
validation : should contain all customers and item_names can be subset of train(15% of complete data)
customer item
A orange
A apple
A banana
B pinepple
B banana
B papaya
B Lime
test : should contain all customers and item_names can be subset of train(15% of complete data)
Customer item
A carrot
A grape
A watermelon
B papaya
B Lime
【问题讨论】:
-
例如客户 A 和商品 Orange,只有 2 个条目。在这种情况下,不可能将它们分成 3 个桶。如果您可以根据需要发布 3 个存储桶的示例预期数据,那将会很有帮助。
-
@parth ,修改它,上面问题的任何输入
-
@Serdar ERİÇ 的回答似乎是实现您想要的最简单的方法。但是,如果某些(客户、项目)组合的示例很少,它将失败。如果您知道在您的实际数据中并非如此,那么就可以了,否则您需要编写自定义代码,其中您必须对每个(客户、项目)组合进行随机抽样。
标签: python pandas data-science training-data sampling