본문 바로가기
머신러닝/프로젝트

Proj 피마 인디언 당뇨병 예측

by ADELA_J 2023. 10. 24.

데이터 세트  : https://www.kaggle.com/datasets/uciml/pima-indians-diabetes-database

데이터 피처 Pregnancies : 임신횟수,
Glucose : 포도당 부하 검사 수치
BloodPressure : 혈압 
SkinThickness : 팔 삼두근 뒤쪽의 피하지방 측정값
Insulin : 혈청 인슐린
BMI  :체질량지수
DiabetesPedigreeFunction : 당뇨 내력 가중치 값
Age:  나이
Outcome : 클래스 결정값 ( 0 또는 1)

 

<사용될 패키지>

'OutCome', 클래스 결정값의 갯수하고 

3개 열만 뽑아서 봐보기

info() 도 뽑아보자

Null값은 없었고, 모두 숫자형이다. 

0은 500개고 1은 268개로 불균형하기 때문에 균형있게 나눠주려면  stratify = y라고 해야함

정확도가 77%, 재현율은 59%. 

데이터가 Negative가 더 많기 때문에 정확도보다 재현율 성능에 좀더 초점을 맞출 예정

 

정밀도, 재현율 곡선 보기

0.45정도인곳에서 만나는것 보면 임계값을 저렇게 맞추면 정밀도랑 재현율이 어느정도 균형을 이룰듯..

근데 둘다 지표가 너무 낮음 ㅠ

 

다시 한번 하는 EDA, 전처리

describe를 통해 봤을 때 최소값이 0인게 너무 많음.

심지어 Skinthickness, Insulin 같은 경우에는 25%도 0임.. 

포도당수치(Glucose)가 0인것은 말이 되지 않지만 5개나 있음. 

전체적으로 0값이 몇 퍼센트의 비율로 존재하는지 확인.

세상에 너무 많댜,,,

그래서 삭제하기에는 너무 많기 때문에 평균값으로 대체 한다.

 

 

그리고 평균값으로 대체한 곳에 피처 스케일링을 적용해 변환하기...!

회귀할때는 일반적으로 스케일링을 적용하는게 좋음.

> 값의 범위를 일정수준으로 맞춰주니 좀더 좋은 퍼포먼스가 나올 수 있음. 

하지만 아직도 부족한 성능,,,^^

 

 

그래서 임곗값을 0.3부터 0.5까지 변화시키면서 평가 수치를 출력해본 결과.

음 그래 크게 달라지지 않았음. 

하지만 앞서 말했듯이 재현율을 높이는데 집중하자 했으니 재현율이 가장 높은 임곗값은 0.33

(하지만 정밀도가 똥망이라..)

그래서 어느정도 둘다 괜찮은 임곗값은 0.48. 

임곗값을 낮춘 상태에서 다시 예측해보기

 

 

ㅎㅎㅎ...그래 뭐... 하이퍼파라미터를 조정하거나 학습하는 값이 좀 더 많았다면 괜찮았을까..!