Machine Learning

imblearn 라이브러리 - up sampling 기법으로 불균형 데이터 다루기

yugyeong 2022. 12. 2. 12:07

 

imblearn 라이브러리 - 불균형 데이터 다루기

 

 

분류를 하는 인공지능을 만들 때,

예측할 컬럼 y , 예측하는데 필요한 컬럼 X 으로 둔다.

 

이때, 정확도가 높은 인공지능을 만들기 위해서는 테스트용 데이터의 예측 컬럼은 균형있는 데이터를 가지고 있어야한다.

 

 

아래의 예시 데이터프레임에서 예측할 컬럼은 'class' 컬럼이다.

'class' 컬럼을 변수 y에 저장하였다.

예측하는데 필요한 컬럼인 'Preg' 부터 'age' 컬럼을 변수 X 에 저장하였다.

 

 

 

변수 y 에 데이터가 어떻게 들어있는지 확인을 했더니, 0의 값은 500개, 1의 값은 268 개로 데이터가 불균형하게 존재를 하고있다.

아래는 차트로 데이터 수를 확인한 결과이다.

 

이때 성능이 좋은 인공지능을 만들기 위해서는 데이터수를 균형있게 맞춰주어야 하는데, 이 게시글에서는 균형있게 맞추는 방법 중 하나인  up sampling 기법에 대해서 설명할 것이다.

 

up sampling 기법은 현재 데이터 수가 부족한 1 의 데이터들을 imblearn 라이브러리를 이용하여서 데이터를 늘리는 방법이다.

 

 

 

먼저, up sampling 을 하기 위해 필요한 라이브러리를 임포트 해준다.

 

from imblearn.over_sampling import SMOTE

 

SMOTE() 함수 괄호안에는 random_state 값을 넣어준다.

함수를 메모리에 올리기 위해서 변수 sm 에 저장을 한다.

 

fit_resample() 을 이용하여 괄호 안에는 예측하는데 필요한 컬럼 X, 예측할 컬럼 y 를 넣어준다.

그 후 up sampling 한 데이터를 원래의 변수 X, y 에 다시 저장을 해준다.

이렇게 하면 up samplig 이 된것이다.

 

 

sm = SMOTE(random_state= 2)

X, y = sm.fit_resample(X, y)

 

 

 

 

 

y 에 value_counts() 를 해주면 데이터 1의 값이 증가한 것이 보인다.

imblearn 라이브러리를 이용하여 데이터의 불균형을 해결한 것이다.

 

 

 

데이터 불균형 문제를 해결하였다면, 인공지능 계속해서 만들면 된다.