728x90

sklearn.metrics 메소드를 살펴보자

 


 

1. confusion matrix 형태의 데이터를 관리한다.

   :  클래스 분류 결과를 실제(정답) 클래스와 예측 클래스를 축으로 가진 형태

sklearn.metrics.confusion_matrix(y_true, y_pred, *, labels=None, sample_weight=None, normalize=None)
  실제 클래스 예측 클래스
TP ( True Positive ) T T
TN ( True Negative ) F F
FP ( False Positive ) F T
FN ( False Negative ) T F

 

-- case 1 ( 예측 : 행 / 실제 : 열 )

0 : Negative   /   1 : Positive

  0 1
0 TN FP
1 FN TP

-> 예측 0, 실제 0 : 예측을 0으로 하고 실제도 0으로 맞음 ( True Negative )

    예측 0, 실제 1 : 예측을 0으로 했으나 실제는 1 틀림 ( Fasle Negative )

    예측 1, 실제 0 : 예측을 1으로 했으나 실제는 0 틀림 ( False Positive )

    예측 1, 실제 1 : 예측을 1로 하고 실제로 1이 맞음 ( True Positive )

실제와 예측 값에 따라 앞(T/F) 결정, 예측(행)에 따라서 뒤(N/P)가 결정

 

-- case 2

0 : Negative   /   1 : Positive  /  labels = [ 0, 1, 2 ]

  0 1 2
0 TN FP FP
1 FN TP TP
2 FN TP TP

 


 

2. 평가 점수

 

2-1. accuracy_score( ) : 정답률 ( =정확도 )

- 실제 데이터 중 맞게 예측한 데이터의 비율을 뜻한다.

2-2. presicion_score( ) : 적합율 ( PPV : Positive Predicitive value )

- positive에 속한다고 출력한 샘플 중 실제로 positive 클래스에 속하는 샘플 수의 비율을 말한다.

  FP( False Positive : 예측은 positive로 했으나 실제는 negative인 경우)가 커지면 적합율은 작아진다.

2-3. recall_score( ) : 재현율 

- 실제 positive 클래스에 속한 표본 중에 positive 클래스에 속한다고 출력한 표본의 수의 비율을 뜻한다.

  FN( False Negative : negative로 예측했으나 실제가 positive인 경우)이 커지면 재현율은 작아진다.

 

 
  from sklearn.metrics import *

  y_true = [ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1 ]
  y_pred = [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 1 ]
  cm =confusion_matrix(y_true, y_pred)
  print(cm)

  acc = accuracy_score(y_true, y_pred)
  print('accuracy_score : ',acc)

  pre = precision_score(y_true, y_pred)
  print('precision_score : ', pre)

  recall = recall_score(y_true, y_pred)
  print('recall_score: ', recall)
 

< 출력 결과 >

[[1 4]     # 00(TN)  1개,  01(FP)  4개,  

[3 2]]     # 10(FN)  3개,  11(TP)  2개

accuracy_score : 0.3    #  3 ( 1 +2 ) / 10 ( 1 + 4 + 3 + 2 ) 

precision_score : 0.3333333333333333    # 2 / 6 ( 4+2 )

recall_score: 0.4    # 2 / 5 (2 + 3)


 

 

2-4. f1_score( ) : f1 측정(measure) 값

2-5 : Classification_report( )

- 각각의 클래스를 positive 클래스로 보았을 때의 적합율, 재현율, F1점수를 각각 구하고 그 평균값으로 전체 모형의 성능을 평가한다.

 
  from sklearn.metrics import *

  y_true_m = [ 0, 0, 0, 1, 1, 1, 2, 2, 2 ]
  y_pred_m = [ 0, 1, 1, 1, 1, 2, 2, 2, 2 ]

  print(confusion_matrix(y_true_m, y_pred_m),'\n')

  print('average=None : ', precision_score(y_true_m, y_pred_m, average=None))
  print('average=\'macro\' : ', precision_score(y_true_m, y_pred_m, average='macro'))
  print('average=\'micro\' : ', precision_score(y_true_m, y_pred_m, average='micro'))
  print('average=\'weighted\' : ', precision_score(y_true_m, y_pred_m, average='weighted'))
  print('\n')

  print(classification_report(y_true_m, y_pred_m))
 

< 출력 결과 >

 

728x90
댓글
250x250
최근에 올라온 글
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Total
Today
Yesterday