imblearn
マルチラベル分類ではうまく機能しないため、独自のアンダーサンプリング関数に取り組んでいます(たとえば、1次元のみを受け入れますy
)。
X と y を反復処理して、多数派クラスの一部である 2 行または 3 行ごとに 1 行を削除します。目標は、多数派クラスの行数を減らす手っ取り早い方法です。
def undersample(X, y):
counter = 0
for index, row in y.itertuples():
if row['rectangle_here'] == 0:
counter += 1
if counter > 3:
counter = 0
X.drop(index, inplace=True)
y.drop(index, inplace=True)
return X, y
しかし、少量の行 (〜 30,000) でもカーネルがクラッシュします。
y
このようなものです, いつでもf2
またはf3
存在する,f1
存在する
それでは、0 が発生する回数を数えてから、f1
3 回ごとに 0 行を削除してみましょう。
f1 f2 f3
0 0 0 0
1 0 0 0
2 0 0 0
3 1 0 1
4 0 0 0
5 0 0 0
6 0 0 0
7 0 0 0
8 0 0 0
9 0 0 0