【发布时间】:2019-04-15 19:43:06
【问题描述】:
我正在研究二元分类机器学习问题,我正在尝试平衡训练集,因为我有一个不平衡的目标类变量。我正在使用 Py-Spark 构建模型。
下面是平衡数据的代码
train_initial, test = new_data.randomSplit([0.7, 0.3], seed = 2018)
train_initial.groupby('label').count().toPandas()
label count
0 0.0 712980
1 1.0 2926
train_new = train_initial.sampleBy('label', fractions={0: 2926./712980, 1: 1.0}).cache()
上面的代码执行了欠采样,但我认为这可能会导致信息丢失。但是,我不确定如何执行上采样。我还尝试使用如下示例函数:
train_up = train_initial.sample(True, 10.0, seed = 2018)
虽然它在我的数据集中增加了 1 的计数,但它也增加了 0 的计数并给出了以下结果。
label count
0 0.0 7128722
1 1.0 29024
有人可以帮我在 py-spark 中实现上采样吗?
非常感谢提前!
【问题讨论】:
标签: machine-learning pyspark random-forest sampling