Spark:如何在LabeledPoint上执行欠采样?

时间:2015-11-24 14:08:47

标签: scala apache-spark sampling

我的LabeledPoint中有一些不平衡的数据。我想要做的是选择所有阳性和n次阴性(随机)。例如,如果我有100个肯定和30000个否定关键字,我想创建包含所有LabeledPoint个正面和100个底片300的新n=3 })。

在实际情况中,我不知道我在开始时有多少正面和负面。

1 个答案:

答案 0 :(得分:7)

据推测,您的数据是RDD[LabeledPoint]。您可以执行以下操作:

val pos = rdd.filter(_.label==1)
val numPos=pos.count()
val neg = rdd.filter(_.label==0).takeSample(false, numPos*3)
val undersample = pos.union(neg)

您可以找到takeSamplefilterunion here的文档。