들어가며
지난 글까지 우리는 데이터를 탐색하는 과정을 거쳐 데이터를 정제할 필요성을 몇가지 알아보았습니다. 이번에는 실제로 데이터를 정제해보도록 하겠습니다. 데이터 준비하기과정에서 데이터 타입을 알아보며 total_bedrooms특성에 일부 null값이 존재하여 누락된 경우가 있습니다. null값을 모델에 그대로 학습시키면 오류가 발생하기에 이를 정제하는 방법에 대해서 알아봅시다.
4.1.1 해당 구역 전체 제거
dropna() 메서드를 사용하면 null값이 포함된 구역을 간단하게 제거 할 수 있습니다.
아래의 예시코드는 위 링크에 들어가면 순서대로 정리되어있으니 확인하시면 됩니다.
4.1.2 전체 특성제거
drop() 메서드와 axis=1로 설정하면 해당 특성 전체를 간단하게 제거할 수 있습니다.
4.1.3 대체값으로 채우기
fillna()메서드를 통해서 대체값을 null값에 채울 수 있습니다.
사실 대부분의 경우 이 3번째 방법을 추천드립니다. 위 두 가지의 경우는 어떠한 경우라도 데이터가 유실되므로 학습을 하는데 손해가 발생하기 때문입니다. 대체값으로는 보통 평균값이나 중간값을 사용합니다.
4.1.4 사이킷런 함수사용하기
사이킷런에는 누락된 값을 대체하도록 하는 Imputer 모듈이 존재합니다. 이를 사용하면 간단하게 데이터를 정제할 수 있습니다.
sklearn.preprocessing.Imputer 클래스는 사이킷런 0.20 버전에서 사용 중지 경고가 발생하고 0.22 버전에서 삭제될 예정입니다. 대신 추가된 sklearn.impute.SimpleImputer 클래스를 사용합니다.
마치며
지금까지 누락된 값을 정제하는 방법에 대해서 알아보았습니다. 다음글에서는 사이킷런의 API구조 설계에 대해서 알아보도록 하겠습니다.
'Machine Learning' 카테고리의 다른 글
머신러닝 프로젝트 - 5. 텍스트와 범주형 특성 다루기 (0) | 2020.03.04 |
---|---|
머신러닝 프로젝트 - 사이킷런의 설계철학 (0) | 2020.03.04 |
머신러닝 프로젝트 - 3. 데이터 탐색(피어슨의 상관계수),시각화, 특성 조합 (2) | 2020.03.01 |
머신러닝 프로젝트 - 계층적 샘플링(stratified sampling) (0) | 2020.02.29 |
머신러닝 프로젝트 - 2. 테스트 세트 추출하기 (0) | 2020.02.29 |