개발/머신러닝

파이썬. 머신러닝 - 의미없는 데이터 , 데이터의 불균형 처리방법(Up Sampling)

웅'jk 2022. 12. 2. 11:50

간혹 데이터값이 NaN은 아니지만 의미가 없는 자료로 있는 경우가 있습니다.

 

위와 같은 데이터가 있습니다.

그런데 class를 제외한 컬럼의 0값이 있는걸 확인 할 수 있습니다.

이 컬럼들은 0인 값은 의미가 없어서 인공지능을 만들어 학습하는데 안좋은

영향을 줄 수도 있습니다. 따라서 이 값들을 처리를 해주셔야합니다.

 

import numpy as np
df.loc[:,'Plas':'age']=df.loc[:,'Plas':'age'].replace(0,np.nan)

# 1. NaN을 없애고, 인공지능 개발
df = df.dropna()

# 2. 다른 값으로 채우는 방법
df.fillna(df.mean(),inplace=True)

위 코드는 먼저 0값들을 NaN으로 바꾼 뒤 다시 가공한 방법입니다.

2가지 방법으로 아예 없애거나 다른 데이터로 채우는 방법입니다.

 

다만 이렇게 처리를 한 값들을 토대로 개발을 하는데 문제점이 생길 수 있습니다.

바로 데이터의 불균형을 가져올 수도 있다는 점인데요.

 

class 항목이 우리가 예측할 부분인데 자료의 값이 너무 불균형 합니다.

따라서 이를 해결하기 위해서는 샘플링 과정을 거쳐야 합니다.

 

2가지 방법이 있습니다.

1. Up - Sampling

2. Down - Sampling

 

업샘플링은 비어있는 값들을 최대한 맞춰주고

다운샘플링은 과다인 데이터를 비슷하게 맞추는 방법입니다.

 

이번에는 업샘플링에 대해 알아보겠습니다.

 

# import 가 안될때
# 쥬피터 노트북에서 pip install imblearn

from imblearn.over_sampling import SMOTE

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

imblearn 라이브러리를 이용하여 처리 할 수 있습니다.