간혹 데이터값이 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 라이브러리를 이용하여 처리 할 수 있습니다.
'개발 > 머신러닝' 카테고리의 다른 글
파이썬. 머신러닝 - Support Vector Machine (0) | 2022.12.02 |
---|---|
파이썬. 머신러닝 - K-NN (0) | 2022.12.02 |
파이썬. 머신러닝 - Logistic Regression (0) | 2022.12.01 |
파이썬. 머신러닝 - 내가 만든 Linear Regression으로 예측하기, joblib으로 저장 (0) | 2022.12.01 |
파이썬. 머신러닝 - Linear Regression ? (0) | 2022.12.01 |