[파이썬 머신러닝] 사이킷런을 이용해 피마 인디언 당뇨병 예측하기

2021. 3. 11. 01:09프로그래밍-AI & 빅데이터/머신러닝

피마 인디언 당뇨병 데이터는 여러가지 feature로 구성되어 있다.

데이터를 받아서 뽑아보았다.

전체 데이터 중, Negative값이 500개, Positive 값이 268개이다.

 

각 컬럼별로 데이터를 살펴보니, 모두 숫자타입의 feature 데이터이고 null값은 없었다

따라서 별도의 encoding은 필요하지 않다.

 

해당 데이터의 정확도는 74퍼센트, 재현율은 46.3퍼센트로 측정되었다.

전체의 55퍼센트가 Negative이므로, 정확도보다는 재현율을 조금 더 올려보겠다.

 

약 0.34쯤의 threshold를 가지면 precision과 recall이 균형을 이룬다.

그러나 절대적인 수치는 둘다 0.65쯤으로 낮은편이다.

따라서 데이터를 한 번 더 점검해보겠다

 

피쳐값의 분포도를 보니, min이 0인 값들이 존재한다. 

예를 들어보면

Glucose 컬럼의 경우 저정도가있다.

사실 얘는 0값이 많지는 않으니 큰 문제가 되지 않겠지만, 다른 피쳐들이 얼마나 많은 0을 가지고 있는지 확인해본다.

 

각 feature에 대해 조사해보니 skinThickness와 Insulin은 매우 많은 수치가 0이었다.

0값을 mean으로 대체하고 다시학습하였다

상당히 발전했다.

그러나 여전히 재현율은 낮아 보이므로 threthold를 바꿔가며 높혀보겠다

 

새로 학습한 데이터로 threshold를 바꿔가며 측정해보았다

0.33이 가장 재현율이 높지만 전체적으로 0.48정도가 적절해보인다

     

변경된 threshold로 새로 학습하면 다음과 같다