카테고리 없음

Machine Learning Day 1 | Missing Data

Michellee12 2022. 9. 28. 00:33

누락된 데이터(Missing Data)를 처리하는 2가지 방법

1. 관측값을 지우고 무시하기

큰 데이터 세트가 있고 그 중에 1퍼센트 정도만 누락됐을 때 그 관측값을 지우는건 모델의 학습 품질에 큰 영향을 끼치지 않는다. 

  x = x.dropna() # 결측치가 있는 행 전부 삭제
  x = x.dropna(axis = 1) # 결측치가 있는 열 전부 삭제
  • 결측치가 있는 행은 전부 삭제

2. 누락된 열의 평균값을 내서누락된 데이터를 대체

가장 표준적인 방법

평균값 대신 중간값도 가능

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values = np.nan, strategy = 'mean')
imputer.fit(x[:, 1:3])
x[:, 1:3] = imputer.transform(x[:, 1:3])
  • SimpleImputer는 누락된 데이터를 처리하는 데 도움이 되는 사이킷런 클래스입니다.
  • 매개변수 설명 : 무엇을(missing_value=) 무엇으로(strategy=) 대체할 거이냐
  • np.nan : Not a Number의 약자. 데이터 자체가 없음을 의미한다. 
  • 실제로 큰 데이터 세트를 가지고 분석할 때는 결측치가 어디에 있는지 알기 힘들기 때문에 일반적으로 모든 숫자열에 적용해주는게 좋다. 
  • strategy 파라미터의 default는 mean(평균)이고, median(중앙값), most_frequent(최빈값), constant(지정값)을 파라미터로 지정해줄 수 있다
  • fit()으로 strategy에 해당하는 값을 계산한다. transform()으로 누락된 값을 계산된 값으로 채워준다. 
  • fit()과 transform() 대상이 같은 경우에는 fit_transform()으로 바로 처리할 수 있다.