我想知道是否有任何方法可以使用 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)
最后用 union all 加入所有数据帧
transformed_04_more_rows.unionAll(transformed_03_more_rows).unionAll(transformed_02_more_rows)
我正在手动检查的采样值。例如,如果第 4 类有 2000 行,而第 2 类有 10 行,则手动检查并相应地提供值 16,12,如上面代码中提供的那样
请原谅我提到的代码不完整。只是为了给出我提出的观点。我想知道 pyspark 中是否有像 SMOTE 这样的自动化方式。
我在 Pyspark 中看到了以下链接,过 采样或 SMOTE
它说我的目标班级必须只有两个。如果我删除条件,它会给我一些数据类型问题
任何人都可以帮助我在 pyspark 检查每个类并提供采样值的实现非常痛苦,请帮助