サンプルの均等化を実現するためのデータ処理のオーバーサンプリングとアンダーサンプリングのSMOTEとランダムサンプリング


✌オーバーサンプリングとアンダーサンプリング

1.✌サンプリング入門

分類問題では、正と負の例の数に大きな違いがあり、この状況はカテゴリの不均衡と呼ばれます。

この問題を解決するには、2つの方法があります。正の例の数が多く、負の例の数が非常に少ないとします。

1.肯定的な例の数を減らし、データのバランスを取り、さらに分類すると、この状況は「アンダーサンプリング」になります。

2.反例の数を増やしてデータのバランスを取り、分類します。これは「オーバーサンプリング」と呼ばれます。

2.✌オーバーサンプリング

2.1ラン​​ダムサンプリング:

少数のサンプルを追加し、サンプルの数がサンプルの大部分と等しくなるまで、元の少数のサンプルからランダムにサンプルを選択します

2.2 SMOTEサンプリング:

合成戦略は、各マイノリティサンプルaの最近傍からサンプルbをランダムに選択し、次にaとbの間の線上の点を新しく合成されたマイノリティサンプルとしてランダムに選択することです。

3.✌アンダーサンプリング

オーバーサンプリングとは反対に、あまりにも多くのサンプルを破棄します

4.✌コードデモ

1.1✌データを作成する

x=np.array([[1,2],[3,5],[3,5],[2,4],[5,9],[8,7],[13,5],[1,32],[1,8],[5,3]])
y=np.array([0,0,0,0,0,1,1,1,1,1])

from collections import Counter
Counter(y)

ここに画像の説明を挿入します

1.2✌ランダムサンプリング

from imblearn.over_sampling import RandomOverSampler

ros=RandomOverSampler(random_state=0)
x_over,y_over=ros.fit_resample(x,y)
Counter(y_over)

ここに画像の説明を挿入します

1.3✌SMOTEサンプリング

from imblearn.over_sampling import SMOTE
smote=SMOTE(random_state=0)
x_smote,y_smote=smote.fit_resample(x,y)
y_smote

ここに画像の説明を挿入します

1.4✌アンダーサンプリング

from imblearn.under_sampling import RandomUnderSampler
rus=RandomUnderSampler(random_state=0)
x_under,y_under=rus.fit_resample(x,y)
y_under

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/m0_47256162/article/details/113791194