본문 바로가기
DataScience/Dacon

인구 데이터 기반 소득 예측 경진대회 - 전처리

by mkk4726 2022. 4. 26.

그림1. Dacon 인구 데이터 기반 소득 예측 경진대회

https://mkk4726.tistory.com/30

 

인구 데이터 기반 소득 예측 경진대회 - EDA

* JupyterNotebook에서 작성되었습니다. Dacon basic에 인구 데이터 기반 소득 예측 경진대회가 열렸다. 소득 수준이 50k보다 높은지 낮은지를 예측하는 이진분류 문제다. 모델링에 앞서 데이터를 탐색하

mkk4726.tistory.com

EDA에 이어서 전처리 후 간단한 모델링까지 진행했습니다.

전처리는 3가지 과정으로 진행됩니다. 결측치 처리 -> 정규화 -> one-hot encoding. 

 

1. 결측치 처리

그림2. 결측치 확인

결측치를 확인해보니 workclass, occupation, native.country에 결측치가 존재합니다.

먼저 native.country는 EDA과정에서 확인했 듯 대부분의 값이 US이고 target값의 차이도 없기에 삭제했습니다.

workclass와 occupation은 결측치만 삭제했습니다.

그림3. 결측치 제거

결측치의 개수가 0인 것으로 보아 잘처리되었음을 알 수 있습니다.

 

2. 정규화

그림4. train set 기초통계량확인

기초통계량값을 보면 scale의 차이가 크게 남을 알 수 있습니다. scale을 맞춰줍시다.

그림5. 정규화

sklearn의 StandardScaler를 통해 쉽게 정규화 해줄 수 있습니다.

정규화된 결과가 array형태로 주어지기에 다시 dataframe으로 바꿔주는 과정이 필요합니다.

 

3. One-Hot Encoding

그 다음으로는 변주형 자료들을 처리해줘야합니다.

pandas의 get_dummies 메소드를 통해 쉽게 처리해줄 수 있습니다.

그림6. One-Hot Encoding

여기서 주의해야할 점은 train set과 test set을 합친 후에 적용해줘야한다는 것입니다. 

그 이유는 train set과 test set에서 가진 범주형 자료의 종류가 다를 때, feature의 수가 다르게 생길 수 있기 때문입니다.

따라서 합친 후에 one-hot encoding을 적용하고 다시 때주는 과정을 진행했습니다.

 

그림7. 합쳐줌

최종적으로 정규화한 결과와 one-hot encoding한 결과를 합쳐줍니다.

그림8. 함수화

이 과정을 함수화해서 정리했습니다. 이제 이를 바탕으로 간단한 모델링을 진행해봅시다.

 


제일 단순한 모델인 Logistic Regression을 학습, 평가하는 과정을 거쳤습니다.

그림9. Logistic Regression 결과

데이터의 개수가 많아 solver로는 'saga'를, max_iter는 1000으로 설정했습니다.

test_size = 0.2로 나눠서 학습, 평가를 진행했고, 결과는 이진분류이므로 accuracy, precision, recall을 살펴봤습니다.

결과가 상당히 참담하게 나왔는데, 데이터수가 많은 만큼 트리기반알고리즘을 적용하면 더 올라갈 것 같습니다.

주목해볼 점은 recall점수가 많이 낮다는 것인데, 아무래도 0이 1보다 3배정도 더 많아서 그런 것 같습니다.

추후에 SMOTE 오버샘플링과 같은 기법을 적용해봐야겠습니다.

'DataScience > Dacon' 카테고리의 다른 글

인구 데이터 기반 소득 예측 경진대회 - EDA  (0) 2022.04.24

댓글