Я работаю над проблемой машинного обучения двоичной классификации и пытаюсь сбалансировать тренировочный набор, поскольку у меня есть несбалансированная переменная целевого класса. Я использую 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.
Большое спасибо заранее!