Machine Learning & Data Analytics

데이터 전처리 Data Preprocessing

Genie Lee 2022. 2. 17. 00:12
728x90
반응형
데이터를 분석에 사용할 수 있도록 정제(cleansing), 데이터 변환(transforming) 등을 거쳐서 모델링에 필요한 변수로 만드는 과정. 이상값 처리, 결측치 처리 등
https://blog.naver.com/seeyapangpang/222459509531

1. 데이터 정제

일반적으로 데이터 정제에서는 결측값(missing data) 또는 이상치(outlier)를 처리 및 데이터 인코딩을합니다.

 

Nan,Null,None 값을 처리해야 한다.

# isna()로 결손 데이터 여부 확인
df.isna().sum()

#OR 

df.isnull().sum()
# 1)DataFrame에서 결측값이 있는 샘플을 제거하기 위해서는 dropna를 사용합니다.
titanic_2 = titanic.dropna()

# 2)pandas의 DataFrame에서 특정 변수(columns)를 삭제하기 위해서는 drop사용합니다.
titanic_1 = titanic.drop(columns=['Cabin'])

# 3)의 경우 >> 평균값 OR 중앙값 OR 머신러닝으로 예측

이상치(Outlier)처리하기

모델의 성능을 저하할 수 있음.

이상치는 일반적으로 전 처리 과정에서 제거하며, 어떤 값이 이상치 인지 판단하는 기준이 중요함

  1. 통계 지표(카이제곱 검정, IQR지표 등)를 사용하여 판단
  2. 데이터 분포표를 보고 직접 판단
  3. 머신러닝 기법을 사용하여 이상치 분류

이상치 예시

# (Age 값 - 내림 Age 값) 0 보다 크다면 소수점을 갖는 데이터로 분류합니다.
outlier = titanic_2[titanic_2['Age']-np.floor(titanic_2['Age']) > 0 ]['Age']

# 이상치를 처리하여 titanic_3에 넣으면
titanic_3 = titanic_2[titanic_2['Age']-np.floor(titanic_2['Age']) == 0 ]

✔ 중복값 확인 및 중복값 제거

df[df.duplicated(keep=False)]

drop_duplicates() 함수를 이용하여 중복값을 제거합니다.

print("Before:", len(df))
df = df.drop_duplicates()
print("After:", len(df))

---
Before: 1275
After: 1274

✔ Data encoding

- 입력 층에 들어갈 모든 문자열 값은 인코딩돼서 숫자 형으로 변환해야 합니다.

Data encoding (1. Label Encoding) > https://whatif-genie.tistory.com/69

Data encoding (2. One-hot Encoding) > https://whatif-genie.tistory.com/70

728x90
반응형