군침이 싹 도는 코딩

up sampling 본문

Python/Machine Learning

up sampling

mugoori 2022. 12. 2. 11:54

인공지능 학습을 위해서는 데이터의 균형이 중요한데

데이터가 불균형할때 이를 맞춰주는 두가지 방법이 있다

up sampling , down sampling 이다

up sampling은 둘중 낮은쪽의 데이터를 추가하는 방식이고

down sampling 은 둘중 높은곳의 데이터를 삭제하는 방법이다

 

위 데이터 프레임은 당뇨병인 환자와 아닌 환자의 데이터프레임인데

이것을 통해 당뇨병을 분류하는 모델을 만들것이다 우선 당뇨병인

환자와 아닌 사람이 몇명인지 확인해보자

 

 

 

df['class'].value_counts()
>>> 0    500
    1    268
    Name: class, dtype: int64
import seaborn as sb
import matplotlib.pyplot as plt

sb.countplot(data=df, x='class')
plt.show()

# 당뇨병 여부를 판단하는 컬럼 class를 분석해보면 아닌 사람이 두배가까이 많다

그렇기 때문에 이 데이터로는 인공지능을 만들었을때 좋은 결과를 얻기가 힘들다

따라서 우리는 데이터 균형을 맞춰주기 위해서 up sampling을 사용하겠다

 

 

 

from imblearn.over_sampling import SMOTE

sm = SMOTE(random_state=2)
X,y = sm.fit_resample(X,y)
X

# SMOTE 를 사용해서 데이터가 768개였던 데이터가 1000개가 되었다

그러면 당뇨병 여부를 판단하는 class 컬럼의 데이터 균형이 맞춰졌는지 보자

 

 

y.value_counts()
>>> 1    500
    0    500
    Name: class, dtype: int64

# 0과 1이 동일하게 500개가 된 모습이다

이렇게 해두면 인공지능 학습이 더 좋은 결과를 얻을수있다.

'Python > Machine Learning' 카테고리의 다른 글

Support Vector Machine  (0) 2022.12.02
K-NN  (0) 2022.12.02
인공지능 학습 데이터 전처리중 nan 처리 방법 (replace)  (0) 2022.12.02
Logistic Regression  (0) 2022.12.01
LinearRegression  (1) 2022.12.01