sklearn.metrics.classification_보고서 예 설명

sklearn에 관하여.metrics.classification의 설명에 따르면 많은 블로그들이 몇 줄의 코드를 열거하고precision,recall,F1-score의 정의를 다시 말하면 끝난다. 그 용법을 이해하기 어렵다. 본고는 예와 산식이 결합된 방식으로 설명하고자 한다.
 
예.
import numpy as np
from sklearn.metrics import classification_report
y_true =np.array([0,1,2,2,2,1])
y_pred = np.array([0,0,1,2,2,1])
print(classification_report(y_true,y_pred))

결실
              precision    recall  f1-score   support

           0       0.50      1.00      0.67         1
           1       0.50      0.50      0.50         2
           2       1.00      0.67      0.80         3

   micro avg       0.67      0.67      0.67         6
   macro avg       0.67      0.72      0.66         6
weighted avg       0.75      0.67      0.68         6


우리는 모두 0,1,2 세 개의 종류를 가지고 있기 때문에 출력 결과에는 0,1,2 세 줄이 있다
True Positive(TP)는 모델에 의해 양의 샘플로 예측됩니다.
True Negative(진짜 마이너스, TN)는 모델이 마이너스로 예측한 마이너스 샘플이다.
False Positive(가짜 양수, FP)는 모델에서 양의 음수 샘플로 예측됩니다.
False Negative(가짜 마이너스, FN)는 모델이 마이너스로 예측한 양의 견본이다.
precision:TP/(TP+FP)
recall:TP/(TP+FN)
f1-score:2*precision*recall/(precision+recall)
 
행 0:
precison:y_pred에는 두 개의 0이 있는데 실제 라벨에 대응하는 하나는 0이고 하나는 1이기 때문에 TP=1, FP=1, 1/(1+2)=0.5
recall:y_true 중 1개가 예측에서 0으로 예측되었고 0이었으나 예측에서 다른 값으로 예측된 상황이 나타나지 않았기 때문에 TP는 1FN이 0이고 1/(1+0)=1
행 1:
precision:y_pred에는 두 개의 1이 있는데 실제 라벨에 대응하는 하나는 2개, 하나는 1이기 때문에 TP=1, FP=1, 1/(1+2)=0.5
recall:y_true 중 1개가 예측에서 0으로 예측되었고 0이었으나 예측에서 다른 값으로 예측된 상황이 나타나지 않았기 때문에 TP는 1FN이 0이고 1/(1+0)=1
recall:y_true 중 2개가 예측에서 1로 예측되고 실제 라벨에 대응하는 1개가 2개씩 1이므로 TP는 1FN이 1, 1/(1+1)=0.5
 
행2는 독자가 연습으로 참고할 수 있다

좋은 웹페이지 즐겨찾기