我想知道是否有任何方法可以使用pyspark对数据进行过采样。
我有目标变量为10类的数据集。截至目前,我正在接受每个课程并进行如下所示的过采样
transformed_04=transformed.where(F.col('nps_score')==4)
transformed_03=transformed.where(F.col('nps_score')==3)
transformed_02=transformed.where(F.col('nps_score')==2)
transformed_01=transformed.where(F.col('nps_score')==1)
transformed_00=transformed.where(F.col('nps_score')==0)
transformed_04_more_rows=transformed_04.sample(True,11.3,9)
transformed_03_more_rows=transformed_03.sample(True,16.3,9)
transformed_02_more_rows=transformed_03.sample(True,12,9)
最后将所有数据框与所有工会并入
transformed_04_more_rows.unionAll(transformed_03_more_rows).unionAll(transformed_02_more_rows)
采样值我正在手动检查。例如,如果第四类有2000行,第二类有10行手动检查,并根据上面的代码提供相应的值16,12
请原谅我提到的代码不完整。只是为了提出我的观点。我想知道pyspark中是否有像SMOTE这样的自动化方法。
我在下面看到了链接, Oversampling or SMOTE in Pyspark
它说我的目标班必须只有两个。如果删除条件,则会引发一些数据类型问题
有人可以在pyspark的此实现中帮助我吗,请检查每个类并提供采样值非常痛苦,请帮助