SMOTE를 활용한 오버샘플링
시점 : 피처스케일링을 하기 전, X와 y 를 나누고 난 직후에 하는 것이 가장 바람직하다
샘플링에는
- 언더 샘플링
- 오버샘플링 : 적은 데이터 세트를 증식하여 학습을 위한 충분한 데이터를 확보하는 방법
이 있다.
일반적으로 언더샘플링보다 오버샘플링이 예측 성능상 더 유리한 경우가 많아 주로 사용된다.
1. y의 데이터의 불균형 정도를 확인한다
y.value_counts()
>>>
class
0 262
1 130
Name: count, dtype: int64
import seaborn as sb
sb.countplot(data=df, x='class')
plt.show()
2. 1 인 데이터가 적으므로, up sampling 기법으로 데이터를 늘려준다
- imblearn 라이브러리를 이용한다
- 데이터 불균형 문제를 해소 할 수 있다
from imblearn.over_sampling import SMOTE
sm = SMOTE()
X.shape # 업샘플링 하기 전 데이터
# (392, 8)
X, y = sm.fit_resample(X, y)
X.shape # 업샘플링 하고 난 후 데이터
# (524, 8)
y.value_counts()
>>>
class
0 262
1 262
Name: count, dtype: int64