gpt4 book ai didi

machine-learning - 如何使用sample()函数(pyspark)执行上采样

转载 作者:行者123 更新时间:2023-11-30 09:32:19 24 4
gpt4 key购买 nike

我正在研究二元分类机器学习问题,并且我正在尝试平衡训练集,因为我有一个不平衡的目标类变量。我正在使用 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 中实现上采样吗?

提前非常感谢!!

最佳答案

问题在于您对整个数据帧进行了过采样。您应该过滤两个类中的数据

df_class_0 = df_train[df_train['label'] == 0]
df_class_1 = df_train[df_train['label'] == 1]
df_class_1_over = df_class_1.sample(count_class_0, replace=True)
df_test_over = pd.concat([df_class_0, df_class_1_over], axis=0)

示例来自:https://www.kaggle.com/rafjaa/resampling-strategies-for-imbalanced-datasets

请注意,有更好的方法来执行过采样(例如 SMOTE)

关于machine-learning - 如何使用sample()函数(pyspark)执行上采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53273133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com