๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ๋”ฐ์ง€๋Š” ์ง€ํ‘œ๋Š” ์ •ํ™•๋„(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
๋ฐ˜์‘ํ˜•
Liky