ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 평가 - 4
    Python Machine Learning/평가 2020. 7. 30. 18:43

    지금까지 설명한 평가지표를 이용하여 피마 인디언 당뇨병 데이터 세트를 이용해 당뇨병 여부를 판단하는 머신러닝 예측 모델을 수립해보겠습니다.

     

    피마 인디언 당뇨병 데이터 세트는 다음 피처로 구성되어 있습니다.

    • Pregnancies: 임신 횟수
    • Glucose: 포도당 부하 검사 수치
    • BloodPressure: 혈압(mm Hg)
    • SkinThickness: 팔 삼두근 뒤쪽의 피하지방 측정값(mm)
    • Insulin: 혈청 인슐린(mu U/ml)
    • BMI: 체질량지수(체중(kg)/(키(m))^2)
    • DiabetesPedigreeFunction: 당뇨 내력 가중치 값
    • Age: 나이
    • Outcome: 클래스 결정 값(0또는 1)

    --> 전체 768개의 데이터 중에서 Negative 값 0이 500개, Positive 값 1이 268개

    --> Null값은 없으며 피처의 타입은 모두 숫자형. 별도의 인코딩은 필요하지 않음.

    --> 이전에 사용했던 함수인 get_clf_eval( ), get_eval_by_threshold( ), precision_recall_curve_plot( )을 이용해 성능 평가 지표 출력하고 재현율 곡선을 시각화.

     

    ==> 예측 정확도, 재현율이 측정되었으며, 전체 데이터 중 65%가 Negative이므로 정확도보다는 재현율 성능에 초점을 맞추겠습니다. 먼저 정밀도 재현율 곡선을 보고 임계값별 변화를 확인하기 위해 precision_recall_curve_plot( ) 함수를 이용하겠습니다.

     

    ==> 임계값이 0.42정도일 때 재현율 정밀도가 균형을 맞추지만 두 값 모두 0.7이 안되는 낮은 수치입니다.

     

    --> 원본 데이터의 피처 값의 분포도를 살펴보면 min( )값이 0으로 되어있는 피처가 상당히 많습니다. glucose 피처는 포도당 수치인데 min 값이 0인 것은 잘못된 것으로 보입니다.

     

    --> min( ) 값이 9으로 되어있는 피처에 대해 0값의 건수 및 전체 데이터 건수 대비 몇 퍼센트의 비율로 존재하는지 확인

    --> skinthickness와 insulin의 0값은 많은 퍼센트를 차지하고 있으며 이들을 평균값으로 대체.

     

    --> 0값을 평균값으로 대체한 데이터 세트에 피처 스케일링을 적용하고 이후에 다시 학습/테스트 데이터세트로 나누고 로지스틱 회귀를 적용해 성능 평가 지표를 확인

    --> 여전히 개선이 필요해 보이는 재현율의 성능을 높이기 위해서 분류 결정 임계값을 변화시켜 성능 수치 확인

    --> 0.3 ~ 0.5 까지의 분류 결정 임계값을 이용하여 성능 수치를 확인했으며, 0.48일 때 가장 좋은 성능이 나타남.

     

    --> 임계값을 0.48로 설정한 Binarizer를 생성

    --> lr_clf의 predict_proba( ) 예측 확률 array에서 1에 해당하는 칼럼값을 Binarizer 변환 

     

    'Python Machine Learning > 평가' 카테고리의 다른 글

    평가 - 5  (0) 2020.07.30
    평가 - 3  (0) 2020.07.30
    평가 - 2  (0) 2020.07.29
    평가 - 1  (0) 2020.07.29
Designed by Tistory.