SMOTE (imblearn.over_sampling import SMOTE) を使用して、一部のクラスが非常に不均衡なマルチクラス分類問題を解決しています。現在、いくつかの反復を通じて観測値が最も少ないクラスをオーバーサンプリングするループを作成しました。ライブラリはデフォルトで、サンプルが最も少ないクラスを取得してオーバーサンプリングしますが、オーバーサンプリングするクラスを決定したいと思います。ライブラリがこのオプションをどのようにサポートしているかわかりません - 何かアイデアはありますか?
私のコード:
df = pd.read_csv(rawdata)
X = df.iloc[:, :-1]
y = df.iloc[:, -1]
for x in range(1,3):
print("Run Number:", x)
print(X.shape)
print('Original dataset shape {}'.format(Counter(y)))
sm = SMOTE(ratio=0.5, random_state=42, k_neighbors=3)
X, y = sm.fit_sample(X, y)
print('Resampled dataset shape {}'.format(Counter(y)))