군침이 싹 도는 코딩
up sampling 본문
인공지능 학습을 위해서는 데이터의 균형이 중요한데
데이터가 불균형할때 이를 맞춰주는 두가지 방법이 있다
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 |