반응형

✔ confusion_matrix
실제 값(y_true)과 예측 값(y_pred)을 비교하여 오차 행렬을 반환한다.
ConfusionMatrixDisplay : 오차 행렬을 시각화 할 수 있는 모듈
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
cm = confusion_matrix(y_test, y_pred)
disp = ConfusionMatrixDisplay(confusion_matrix=cm)
disp.plot(cmap="Blues")

cm 오차행렬 : train set [[1167 45] [ 27 108]]
여러 모델을 학습 시켜보면서 오차행렬을 구하고, 오차행렬을 통해 평가지표를 만든다.
각 모델마다 평가지표를 비교해서 최종 모델을 선택한다.
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
accuracy_score(y_train, y_pred) # 정확도
precision_score(y_train, y_pred) # 정밀도
recall_score(y_train, y_pred) # 재현율/민감도
f1_score(y_train, y_pred) # F1 score
✔ classification_report
클래스별 precision, recall, f1-score를 한 번에 출력.
from sklearn.metrics import classification_report
classification_report(y_test, y_pred)

노란선 위에는 0클래스와 1클래스의 각각에대한 precision, recall, f1-score 결과값 표시.
노란선 아래는 전체의 accuracy와
precision의 평균, recall의 평균, f1-score의 평균을 나타낸다.
accuracy는 전체 데이터에대한 정확도로 (precision, recall, f1-score 값과 관계없이) 독립적인 계산이 이루어짐.
precision - macro avg = (0.98 + 0.71) / 2 = 0.84
precision - weighted avg = ((0.98 * 1212) + (0.71 * 135)) / 1347 = 0.95
▶️ 다중분류에서의 평가지표
- micro : 전체 샘플 기준으로 계산 -> micro precision = micro recall = micro f1-score = accuracy
- macro : 클래스별 점수 계산 후 단순 평균 (클래스 불균형에 민감하다)
- weighted : 클래스별 데이터 수로 가중 평균 (불균형 해결용)
이진분류에서는 average가 default로 average="binary"로 되어있다.
from sklearn.metrics import precision_score, recall_score, f1_score
print(precision_score(y_test, y_pred, average="macro"))
print(precision_score(y_test, y_pred, average="micro"))
print(precision_score(y_test, y_pred, average="weighted"))
print(recall_score(y_test, y_pred, average="micro"))
print(f1_score(y_test, y_pred, average="weighted"))
📌 데이터 성격에따라 봐야하는 평가지표도 다르다.
- 불균형 데이터(의료, 사기탐지) → Recall, F1, PR-AUC
- 스팸 필터링 → Precision 우선
- 균형 데이터 → F1, Accuracy
- 전체 성능 평가 → ROC-AUC
- 높은 확신도 요구 → Precision
- 민감도 높은 문제(질병) → Recall
반응형
'AI > AI TECH' 카테고리의 다른 글
| [플레이데이터 SK네트웍스 Family AI 캠프 21기] 11월 1주차 회고 (0) | 2025.11.10 |
|---|---|
| 모델 성능을 높이기 위한 데이터 전처리 ✨ (0) | 2025.11.09 |
| [플레이데이터 SK네트웍스 Family AI 캠프 21기] 10월 4주차 회고 (0) | 2025.10.26 |
| [플레이데이터 SK네트웍스 Family AI 캠프 21기] 2주차 회고 (1) | 2025.10.05 |
| [플레이데이터 SK네트웍스 Family AI 캠프 21기] 1주차 회고 (0) | 2025.09.28 |