피마 인디언 당뇨병 예측 Pima Indian Diabetes 데이터셋을 이용해 당뇨병 여부를 판단하는 머신러닝 예측 모델 만들고 평가 지표 적용하기 데이터셋은 캐글에서 다운로드: https://www.kaggle.com/datasets/uciml/pima-indians-diabetes-database Pregnancies: 임신 횟수 Glucose: 포도당 부하 검사 수치 BloodPressure: 혈압 SkinThickness: 팔 삼두근 뒤쪽 피하지방 측정값 Insulin: 혈청 인슐린 BMI: 체질량지수 DiabetesPedigreeFunction: 당뇨 내력 가중치값 Age: 나이 Outcome: 클래스 결정값(0 또는 1) Pima Indians Diabetes Database Predict ..
ROC곡선과 AUC ROC곡선과 이에 기반한 AUC스코어는 이진 분류의 예측 성능 측정에서 중요하게 사용되는 지표 ROC곡선은 FPR(False Positive Rate, X축)이 변할 때, TPR(True Positive Rate, 재현율, Y축)이 어떻게 변하는가를 곡선 형태로 나타냄 특이도(TNR, True Negative Rate): 재현율(민감도)에 대응하는 지표, 실제값 negative가 정확히 예측되어야 하는 수준을 나타냄 ex) 질병이 없는 건강한 사람은 질병이 없는 음성으로 판정 ㄴ TNR = TN / (FP + TN) FPR = FP / (FP + TN) 1 - TNR ROC 곡선이 가운데 직선에 가까울수록 성능이 떨어지고, 멀어질수록 성능이 뛰어난 것 ROC곡선은 FPR을 0부터 1까..
F1 스코어 F1스코어는 정밀도와 재현율을 결합한 지표 정밀도와 재현율이 어느 한 쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 가짐 사이킷런은 f1_score() API 제공 In [3]: import pandas as pd titanic_df = pd.read_csv('./titanic_train.csv') from sklearn.preprocessing import LabelEncoder def fillna(df): df['Age'].fillna(df['Age'].mean(), inplace=True) df['Cabin'].fillna('N', inplace=True) df['Embarked'].fillna('N', inplace=True) df['Fare'].fillna(0, inp..
정밀도와 재현율 Precision and Recall 정밀도와 재현율은 Positive 데이터셋의 예측 성능에 초점을 맞춘 평가 지표 정밀도 = TP / (FP + TP) 예측을 Positive로 한 대상 중에 예측과 실제값이 Positive로 일치한 데이터의 비율 재현율(민감도) = TP / (FN + TP) 실제값이 Positive인 대상 중에 예측과 실제값이 Positive로 일치한 데이터의 비율 재현율이 중요 지표인 경우 실제 positive 양성 데이터를 negative로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우 ex) 암 판단 모델: 실제 positive(양성)인 암 환자를 negative(음성)으로 판단하면 심각 ex) 보험 사기같은 금융 사기 모델: 실제 금융 거래 사기(posi..
오차행렬 confustion matrix ¶ 오차행렬: 학습된 분류 모델이 예측을 수행하면서 얼마나 헷갈리고 있는지도 함께 보여주는 지표. 이진 분류의 예측 오류가 얼마인지와 더불어 어떤 유형의 예측 오류가 발생하는지 나타냄 예측 클래스와 실제 클래스의 값 유형에 따라 결정되는 TN, FP, FN, TP 형태로 오차 행렬의 4분면을 채움 TN, FP, FN, TP는 Positive 결정값(1)과 Negative 결정값(0)의 결합에 따라 결정됨 sklearn은 confusion_matrix()를 제공 앞에서 사용한 MyFakeClassifier의 예측 성능 지표를 오차행렬로 표현하기¶ In [1]: from sklearn.datasets import load_digits from sklearn.model..
성능 평가 지표 Evaluation Metric¶ 분류의 성능평가 지표 ¶ 1. 정확도 accuracy ¶ 실제 데이터에서 예측 데이터가 얼마나 같은지를 판단하는 지표 직관적으로 모델 예측 성능을 나타냄 그러나 이진 분류(0 또는 1)의 경우, 데이터의 구성에 따라 ML모델의 성능을 왜곡할 수 있음 사이킷런의 BaseEstimator를 활용하여 단순히 성별에 따라 생존자를 예측하는 classifier 생성¶ In [28]: import numpy as np from sklearn.base import BaseEstimator class MyDummyClassifier(BaseEstimator): # fit 메서드는 아무것도 학습하지 않음 def fit(self, X, y=None): pass #predi..