코딩 및 기타

당뇨 예측

정지홍 2023. 3. 5. 15:24

이 장은 다중 레이어 퍼셉트론을 사용하여 당뇨 환자를 예측한다.

순서대로 임신횟수,혈당량,혈압,삼두에서 측정한 피부의 두께,인슐린 농도,BMI지수, 당뇨 유전력,나이,당뇨 예측 변수이며 1이면 5년이내 발병 아니면 0이다.


 

위에 히스토그램을 차례대로 보면 임신 횟수에서 이상점이 있는 것을 볼 수 있다. 또한 혈당치를 보면 0인 환자도 있는데 혈당이 0인 경우는 불가능인 것으로 보아 이는 결측값일 확률이 높다. 혈압도 앞과 마찬가지로 0인 경우는 불가능하다. BMI지수도 0인 환자가 있는 것으로 보아 이 경우도 결측값일 확률이 있다.


점선이 당뇨환자를 나타낸다.  밀도 차트를 보면 혈당치와 나이,BMI가 두 집단간에 차이가 있음을 볼 수 있다. 하지만 혈압이나 피부 두께는 두 집단이 서로 비슷함을 알 수 있다.


데이터 전처리리 위해서 우선 데이터에 결측치가 있는지 확인한다.


위에 기술 통계량을 살펴보면 인슐린,혈압,피부두께,BMI,혈당량이 0이 min으로 나타낸 것을 볼 수 있다. 하지만 이 값들은 0이 될 수 없으니 해당되는 행들을 처리해야한다.


각 열들의 값중 0인 것들의 갯수를 세어보았다. 삭제를 하기에는 인슐린을 나타내는 칼럼이 데이터의 절반정도이니 이러면 모델 성능이 저하된다.

이러한 경우에는 처리하는 방법들

  • 결측치 행들을 제거
  • 평균 or 중앙값 혹은 최빈값으로 대체
  • 다른 머신 러닝 모델을 사용해서 예측

여기에서는 평균으로 대체한다. 그러기 위해서 0을 우선 Nan으로 바꾼다.

처리후


처리후에 통계량 확인


머신 러닝을 위해서 데이터를 표준화 시킨다.


원본에서 80%를 훈련셋 20%를 테스트로 나눈다. 그리고 또 이 훈련 데이터셋에서 80%를 훈련 데이터 셋으로 20%는 검증 데잍터셋으로 나눈다.


훈련
테스트 결과는 77퍼센트의 정확도이다.