0

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)

サンプリング値 手動でチェックしています。たとえば、4 番目のクラスに 2000 行があり、2 番目のクラスに 10 行がある場合、上記のコードで提供されているように、手動でチェックし、それに応じて値 16,12 を提供します。

言及されたコードが完全なものではないことを許してください。私が入れた見解を示すためだけに。pyspark に SMOTE のような自動化された方法があるかどうか知りたかったのです。

以下のリンク、 オーバーサンプリングまたは Pyspark の SMOTE を見てきました

私のターゲットクラスは2つだけでなければならないと言っています。条件を削除すると、データ型の問題が発生します

すべてのクラスをチェックし、サンプリング値を提供することは非常に苦痛です

4

1 に答える 1