我有一个大型数据集,我想根据开头的一些预定义概率分为训练,验证和测试集(例如,0.8概率,一个元组用于训练,0.1用于验证,0.1用于测试。)
我虽然在添加2个布尔列,训练和验证。两者都依赖于单个随机数。如果现在这个随机数小于0.8,则元组用于训练,如果大于0.9,则用于测试。否则,两列都是false,因此它用于验证。
以下查询存在问题,即所有元组使用相同的随机ID,这意味着根据train / validate / test,所有元组具有相同的值。
update data set
test = (sub.rand >= 0.9),
train = (sub.rand <= 0.8) from (select random() rand) sub;
我想尝试在一个查询中创建它,因为数据集可能非常大,我认为,一个查询比将它分成多个查询要快。 (但是,对此问题的任何解决方案表示赞赏。)
感谢您的帮助。
答案 0 :(得分:1)
尝试
update data set
test = random() >= 0.9,
train = random() <= 0.8;