목록부스트코스 11
Sangwon Coding
![](http://i1.daumcdn.net/thumb/C250x250/?fname=https://blog.kakaocdn.net/dn/c7DR5Q/btqFbVmIJ2E/Tx2eBHTlGQvoRf3i66lyGk/img.png)
프로젝트 A. 건강검진 정보로 음주여부 분류하기 국민건강보험 건강검진 정보는? 건강검진정보란 국민건강보험의 직장가입자와 40세 이상의 피부양자, 세대주인 지역가입자와 40세 이상의 지역가입자의 일반건강검진 결과와 이들 일반건강검진 대상자 중에 만40세와 만66세에 도달한 이들이 받게 되는 생애전환기건강진단 수검이력이 있는 각 연도별 수진자 100만 명에 대한 기본정보(성, 연령대, 시도코드 등)와 검진내역(신장, 체중, 총콜레스테롤, 혈색소 등)으로 구성된 개방데이터 중 만개의 데이터를 임의로 추출했습니다. 분류로 음주여부 예측하기 건강검진 센터에서 음주여부에 응답을 하지 않는 사람이 있다고 가정합니다. 검진 데이터를 바탕으로 음주여부를 예측한다면 건강한 생활습관을 가이드하는데 도움이 될 것 입니다. 분..
![](http://i1.daumcdn.net/thumb/C250x250/?fname=https://blog.kakaocdn.net/dn/cbQfvQ/btqE5d7FmNz/QNfERMOy9iKdetGSlB6bL1/img.png)
1. Random Forest 트리를 앙상블 기법(여러 기법을 섞어서 사용하는 기법)에 사용할 수 있습니다. Random Forest는 샘플링하여 여러 데이터를 만들며, 이 샘플은 부트스트랩이라고 합니다. 이를 통해 오버피팅을 방지할 수 있습니다. 2. Gradient Boosting boosting은 트리에 가중치를 부여합니다. RamdomSearchCV를 사용해서 여러 알고리즘 속에 최적의 하이퍼 파라미터를 찾아봅니다. 맨 위에서부터 차례대로 높은 정확도를 가집니다.
![](http://i1.daumcdn.net/thumb/C250x250/?fname=https://blog.kakaocdn.net/dn/d7RRHl/btqE2k0EIvq/AZyB8mr5z0DYzdWKNyj9nk/img.png)
여러가지의 모델성능 개선 방법을 알 수 있었습니다. 1. Feature Engineering 2. One Hot Encoding 3. 결측치 값 대체하기(평균값, 중앙값) 4. 수치형 변수 정규분포 형태로 만들기(log) 5. 상관분석을 통해 파생변수 만들기 6. 이상치 다루기 7. Feature Scaling 최종적으로는 71%였던 정확도가 90%까지 올랐습니다. 이 개선한 데이터 셋을 다시 CSV파일로 저장하였습니다.
![](http://i1.daumcdn.net/thumb/C250x250/?fname=https://blog.kakaocdn.net/dn/bxHXju/btqE1CUFahG/E6Fx90yu8dLrBx1nWuUsHK/img.png)
데이터는 지난 번 모델 기초 포스트에서 사용한 당뇨병 데이터 셋을 사용하였습니다. subplot, distplot을 통해 모든 항목이 각각 당뇨병 결과에 영향을 끼치는지 한눈에 알아볼 수 있습니다. 이제 상관계수를 계산합니다. 대각선은 자기자신이므로 1이고, 수치에 따라 다른 색상을 볼 수 있습니다. 글루코스와 Outcome 값이 상관관계가 높은 것으로 나타납니다. 인슐린과 Outcome은 상관관계가 높지 않습니다.
![](http://i1.daumcdn.net/thumb/C250x250/?fname=https://blog.kakaocdn.net/dn/bNeLre/btqE0Z2T12A/EHXZSl7vfkKd6j4VdO6Wq1/img.png)
의사결정나무 알고리즘으로 간단한 분류 예측 모델을 만들었습니다. 데이터 셋은 당뇨병 데이터셋을 사용하였습니다. https://www.kaggle.com/uciml/pima-indians-diabetes-database Pima Indians Diabetes Database Predict the onset of diabetes based on diagnostic measures www.kaggle.com 실제 정답과 예측한 정답의 차를 합하여 diff_count 변수에 넣습니다. 전체 중에서 44개가 정답과 다릅니다. 모델의 옵션에서 다양한 값들이 랜덤하게 들어가므로 수치가 다를 수 있습니다. 71%의 예측도를 보입니다.
![](http://i1.daumcdn.net/thumb/C250x250/?fname=https://blog.kakaocdn.net/dn/bLz52o/btqE0PyFfOo/OmufYlBwai94vWQFjMFQfK/img.png)
그래프를 그려보니 꾸준히 증가하고 있습니다. 중국, 일본, 미국, 아세안 순으로 성장하고 있습니다. 면세점 이외의 데이터는 꾸준히 성장했고, 면세점 데이터도 성장하고 있습니다. 두 부문 모두 계속 성장 중입니다. heatmap을 통해 알 수 있듯이 중국에서 구매액이 가장 많습니다. 미국과 일본에서도 구매액이 늘어나고 있습니다. 연도, 대륙 별로 같이 볼 수 있습니다. pivot table로는 분포를 보기는 어려운데 heatmap에서는 분포를 색상으로 편하게 볼 수 있습니다. 연도별 판매액을 "상품군별"로 다른 색상으로 표현해봤습니다. legend 그래프를 밖에 그리기 위해 plt.legend() 함수를 사용합니다. bbox_to_anchor를 변경하면 그래프와 범례 사이의 간격을 조절할 수 있습니다. 그..
![](http://i1.daumcdn.net/thumb/C250x250/?fname=https://blog.kakaocdn.net/dn/dSfUul/btqEZ9dogc1/K1VRtSfOXEWfr8DmDSwge1/img.png)
1) 음주 여부에 따라 건강검진 수치 차이가 있을까? 음주 여부에 따른 "감마지티피"를 확인합니다. 음주 안하는 사람들의 감마지티피값이 더 뾰족하다는 것을 알 수 있습니다. 2) 신장과 허리둘레의 크기는 체중과 상관관계가 있을까? 상관계수 상관계수는 변수들 간의 관계를 알아볼 때 유용한 개념입니다. 특정 데이터에 대한 상관관계를 볼 수 있습니다. 상관계수는 -1부터 1사이로 구성되고, 0.3부터 0.7 사이면 뚜렷한 양적 선형관계, 0.7 이상이면 강한 양적 상관관계라 할 수 있습니다. 결론적으로 음주 여부에 따라 건강검진 수치가 차이가 있고, 신장과 허리둘레의 크기는 체중과 상관관계가 있습니다.