혼동 행렬
예측
import numpy as np #임포트
y_test = ch.has_churned #실제
prob = m.predict(ch) #확률 예측
y_pred = np.where(prob > 0.5, 1, 0) #문턱값보다 크면 1, 아니면 0으로 예측
혼동 행렬
from sklearn.metrics import *
confusion_matrix(y_test, y_pred) # 혼동 행렬
정확도 accuracy
- 전체 중에 예측이 맞은 비율
- 특별히 음성/양성 구분에 관심이 없는 경우 사용
- 그러나 대부분은 양성에 더 관심이 있음
accuracy_score(y_test, y_pred) # 정확도
정밀도 precision
- 양성 예측 중에 맞은 비율
- 양성 예측이 중요한 경우 (예: 채용)
- 대체로 문턱값을 높이면(보수적 예측) 정밀도가 높아진다
precision_score(y_test, y_pred) # 정밀도
재현도 recall
- 실제 양성 중 찾아낸 비율
- 양성을 찾아 내는 것이 중요한 경우 (예: 방역)
- 의학 등에서는 민 감도(specificity)라고도 함
- TPR(True Positive Ratio)라고도 함
- 대체로 문턱값을 낮추면(적극적 예측) 재현도가 높아진다
recall_score(y_test, y_pred) # 재현도
특이도 specificity
- 실제 음성 중 찾아낸 비율
- 음성을 찾아 내는 것이 중요한 경우 (예: 방역)
- 대체로 양성 예측을 보수적으로 하면 특이도가 높아진다
- TN 대신 FP를 분자에 사용하면 FPR 1-특이도
F1
- 정밀도(p)와 재현도(r)의 조화 평균
- 조화평균: 역수의 평균의 역수
- 비율, 속도 등을 평균낼 때는 산술평균 대신 조화평균을 사용
f1_score(y_test, y_pred) # F1
퀴즈
hi = pd.read_excel('hiring.xlsx') # 데이터 불러오기
hi['y'] = hi.hire.map({'P': 1, 'F': 0}) # P는 1, F는 0으로 변환
m = logit('y ~ gpa + test + major', hi).fit() # 분석