Confusion Matrix(혼동행렬) 구현

2022. 4. 16. 00:22Artificial_Intelligence/etc

모델의 성능을 따지는 지표는 정확도(Accuracy)만 있는 것이 아니다.

Confusion Matrix은 알고리즘 및 모델의 진단,분류,판별,예측 능력을 평가하기 위하여 고안된 표로, 오류행렬(error matrix)이라고도 불리기도 한다. 

1) Confusion matrix with advanced classification metrics

성능지표로 정확도(Accuracy), 정밀도(Precision), 민감도(=재현율 Recall), F1score 등이 있으며, confusion matrix로 표현이 가능해진다.

# 혼동행렬
import matplotlib.pyplot as plt
my_data = []
y_pred_list = []
for data in prediction_list :
    for data2 in data :
        my_data.append(data2.item())
for data in label_list :
    for data2 in data :
        y_pred_list.append(data2.item())

from sklearn.metrics import confusion_matrix
confusion_matrix(my_data, y_pred_list)

import pandas as pd
import seaborn as sns
confusion_mx = pd.DataFrame(confusion_matrix(y_pred_list, my_data))
ax =sns.heatmap(confusion_mx, annot=True, fmt='g')
plt.title('confusion', fontsize=20)
plt.show()

from sklearn.metrics import precision_score, recall_score, f1_score, accuracy_score, classification_report
print(f"precision : {precision_score(my_data, y_pred_list, average='macro')}")
print(f"recall : {recall_score(my_data, y_pred_list, average='macro')}")
print(f"f1 score : {f1_score(my_data, y_pred_list, average='macro')}")
print(f"accuracy : {accuracy_score(my_data, y_pred_list)}")
f1_score_detail= classification_report(my_data, y_pred_list)
print(f1_score_detail)

위와 같은 방식으로 혼동행렬을 표시할 수 있으며, Label=3인 분류 모델 학습 결과는 아래와 같다.

혼동행렬
모델 학습 후, 성능을 확인하기 위해 출력된 정보들

 

 

 

1)https://manisha-sirsat.blogspot.com/2019/04/confusion-matrix.html
https://namu.wiki/w/%ED%98%BC%EB%8F%99%ED%96%89%EB%A0%AC
728x90

'Artificial_Intelligence > etc' 카테고리의 다른 글

그래서, Docker가 뭔데?  (1) 2024.05.15
Learning Rate Scheduler  (0) 2022.05.29
How to use "Hugging Face"(허깅페이스) for NLP Task  (0) 2022.04.16
RNN, CNN  (1) 2021.06.12
Artificial Intelligence  (0) 2021.04.23