https://mkk4726.tistory.com/30
인구 데이터 기반 소득 예측 경진대회 - EDA
* JupyterNotebook에서 작성되었습니다. Dacon basic에 인구 데이터 기반 소득 예측 경진대회가 열렸다. 소득 수준이 50k보다 높은지 낮은지를 예측하는 이진분류 문제다. 모델링에 앞서 데이터를 탐색하
mkk4726.tistory.com
EDA에 이어서 전처리 후 간단한 모델링까지 진행했습니다.
전처리는 3가지 과정으로 진행됩니다. 결측치 처리 -> 정규화 -> one-hot encoding.
1. 결측치 처리
결측치를 확인해보니 workclass, occupation, native.country에 결측치가 존재합니다.
먼저 native.country는 EDA과정에서 확인했 듯 대부분의 값이 US이고 target값의 차이도 없기에 삭제했습니다.
workclass와 occupation은 결측치만 삭제했습니다.
결측치의 개수가 0인 것으로 보아 잘처리되었음을 알 수 있습니다.
2. 정규화
기초통계량값을 보면 scale의 차이가 크게 남을 알 수 있습니다. scale을 맞춰줍시다.
sklearn의 StandardScaler를 통해 쉽게 정규화 해줄 수 있습니다.
정규화된 결과가 array형태로 주어지기에 다시 dataframe으로 바꿔주는 과정이 필요합니다.
3. One-Hot Encoding
그 다음으로는 변주형 자료들을 처리해줘야합니다.
pandas의 get_dummies 메소드를 통해 쉽게 처리해줄 수 있습니다.
여기서 주의해야할 점은 train set과 test set을 합친 후에 적용해줘야한다는 것입니다.
그 이유는 train set과 test set에서 가진 범주형 자료의 종류가 다를 때, feature의 수가 다르게 생길 수 있기 때문입니다.
따라서 합친 후에 one-hot encoding을 적용하고 다시 때주는 과정을 진행했습니다.
최종적으로 정규화한 결과와 one-hot encoding한 결과를 합쳐줍니다.
이 과정을 함수화해서 정리했습니다. 이제 이를 바탕으로 간단한 모델링을 진행해봅시다.
제일 단순한 모델인 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 |
---|
댓글