더북(TheBook)

4.1.3 누락된 값 대체

종종 훈련 샘플을 삭제하거나 특성 열을 통째로 제거하기 어려울 때가 있습니다. 유용한 데이터를 너무 많이 잃기 때문입니다. 이런 경우 여러 가지 보간 기법을 사용하여 데이터셋에 있는 다른 훈련 샘플로부터 누락된 값을 추정할 수 있습니다.

가장 흔한 보간 기법 중 하나는 평균으로 대체하는 것입니다. 각 특성 열의 전체 평균으로 누락된 값을 바꾸는 것입니다. 다음과 같이 사이킷런의 SimpleImputer 클래스를 사용하면 간편하게 처리할 수 있습니다.

>>> from sklearn.impute import SimpleImputer
>>> import numpy as np
>>> imr = SimpleImputer(missing_values=np.nan, strategy='mean')
>>> imr = imr.fit(df.values)
>>> imputed_data = imr.transform(df.values)
>>> imputed_data
array([[ 1.,    2.,   3.,  4.],
       [ 5.,    6.,  7.5,  8.],
       [ 10.,  11.,  12.,  6.]])

여기서는 NaN 값을 각 특성 열에서 계산한 평균으로 바꾸었습니다. strategy 매개변수에 설정할 수 있는 다른 값으로 median5 또는 most_frequent가 있습니다. most_frequent는 가장 많이 나타난 값으로 누락된 값을 대체합니다. 이 옵션은 범주형 특성 값을 대체할 때 유용합니다. 예를 들어 빨강, 초록, 파랑 같은 색 이름이 인코딩된 특성 열을 다루는 경우입니다. 이 장 후반에서 이런 예를 만날 것입니다.

 

 


  5 역주 median은 데이터를 순서대로 나열했을 때 중간에 위치한 값을 의미합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.