将Hive表拆分为测试集和训练集?

时间:2014-05-08 17:40:55

标签: hadoop mapreduce machine-learning hive hiveql

将Hive表拆分为测试集和训练集(将其用于机器学习)的最有效方法是什么?我想随机抽样x%来形成测试集,使用其他(100-x)%进行训练。我已经研究过使用分区,以及使用行哈希并从中获取一个随机数(我可以决定将它放入哪个集合),但我不确定最好的,最惯用的方法是什么。

1 个答案:

答案 0 :(得分:2)

在这里可能不止一种方法可以给猫皮肤了,但我想到的是一个多表插入并使用rand()进行拆分:

from (
 select *, (rand() * 100 <= x) as is_test_set from my_table
) t
insert overwrite directory '/test_set' select * where is_test_set = true
insert overwrite directory '/training_set' select * where is_test_set = false;

使用行哈希也可以。但是,我会厌倦在任何实际数据列上使用散列或分区;它可能会使您的采样产生偏差。