← 문제 목록/Precision / Recall / F1 from Confusion Matrix [medium]
문제 해설

Precision / Recall / F1 from Confusion Matrix [medium]

평가 지표 · medium

preview

Precision / Recall / F1 [medium]

v1 혼동 행렬 에서 한 걸음 더: 각 클래스의 Precision, Recall, F1 을 뽑고, 전체 집계까지 수행.

C[i,j]C[i, j] = true=i, pred=j 개수 일 때 클래스 cc 에 대해:

Precisionc=CcciCic,Recallc=CccjCcj,F1c=2PcRcPc+Rc\text{Precision}_c = \frac{C_{cc}}{\sum_i C_{ic}}, \quad \text{Recall}_c = \frac{C_{cc}}{\sum_j C_{cj}}, \quad F1_c = \frac{2 \cdot P_c \cdot R_c}{P_c + R_c}

  • Precision: 예측 c 중 실제 c 의 비율 (열 합).
  • Recall: 실제 c 중 예측 c 의 비율 (행 합).
  • F1: 둘의 조화 평균.

집계 모드

average설명
None클래스별 배열 그대로, shape (K,)
'macro'각 지표의 단순 평균 (클래스 불균형 무시)
'weighted'각 클래스 support (실제 샘플 수) 로 가중 평균
'micro'모든 클래스의 TP/FP/FN 을 합친 후 계산 — 다중 클래스에서 accuracy 와 동일

분모 0 (예: 어떤 클래스를 한 번도 예측하지 않음) → 해당 값 0.0.

과제

함수 prf1(y_pred, y_true, num_classes, average=None) 를 완성하세요.

  • 먼저 혼동 행렬 계산.
  • 클래스별 TP / FP / FN / support 추출.
  • average 에 따라 집계.
  • 반환: (precision, recall, f1)None 이면 각 (K,) 배열, 아니면 각 Python float.

테스트 케이스

#이름검증
1반환 3-tuple
2average=None → shape (K,) × 3
3완벽 예측 → P=R=F1=1
4macro = mean(None)
5weighted = support-가중
6micro = accuracy (다중 클래스)
7sklearn precision_recall_fscore_support 와 일치
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.