Spark:如何对 LabeledPoint 进行欠采样?
Spark: How to perform undersampling on LabeledPoint?
我的 LabeledPoint
中有一些不平衡的数据。我想做的是 select 所有正数和 n
倍的负数(随机)。例如,如果我有 100
个正数和 30000
个负数,我想创建一个新的 LabeledPoint
,其中包含所有 100
个正数和 300
个负数(n=3
).
在真实场景中,我并不知道一开始我有多少积极因素和消极因素。
推测你的数据是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)
您可以找到 takeSample
、filter
和 union
here 的文档。
我的 LabeledPoint
中有一些不平衡的数据。我想做的是 select 所有正数和 n
倍的负数(随机)。例如,如果我有 100
个正数和 30000
个负数,我想创建一个新的 LabeledPoint
,其中包含所有 100
个正数和 300
个负数(n=3
).
在真实场景中,我并不知道一开始我有多少积极因素和消极因素。
推测你的数据是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)
您可以找到 takeSample
、filter
和 union
here 的文档。