>>> from sklearn.utils import resample
>>> print('샘플링하기 전 클래스 1의 샘플 개수:',
... X_imb[y_imb == 1].shape[0])
샘플링하기 전 클래스 1의 샘플 개수: 40
>>> X_upsampled, y_upsampled = resample(X_imb[y_imb==1],
... y_imb[y_imb==1],
... replace=True,
... n_samples=X_imb[y_imb==0].shape[0],
... random_state=123)
>>> print('샘플링한 후 클래스 1의 샘플 개수:',
... X_upsampled.shape[0])
샘플링한 후 클래스 1의 샘플 개수: 357
샘플을 추출한 후 클래스 0인 원본 샘플과 업샘플링(upsampling)된 클래스 1을 연결하여 균형 잡힌 데이터셋을 얻을 수 있습니다.
>>> X_bal = np.vstack((X[y==0], X_upsampled))
>>> y_bal = np.hstack((y[y==0], y_upsampled))
그 결과 다수 클래스를 예측하는 규칙은 50% 정확도를 달성합니다.
>>> y_pred = np.zeros(y_bal.shape[0])
>>> np.mean(y_pred==y_bal) * 100
50.0