利用sklearn 計算 precision、recall、F1 score

精確度:precision,正確預測爲正的,佔全部預測爲正的比例,TP / (TP+FP)
召回率:recall,正確預測爲正的,佔全部實際爲正的比例,TP / (TP+FN)
F1-score:精確率和召回率的調和平均數,2 * precision*recall / (precision+recall)

from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
from sklearn.metrics import precision_recall_fscore_support
from sklearn.metrics import accuracy_score

actual = [0,0,0,0,1,1,0,3,3]
predicted = [0,0,0,0,1,1,2,3,3]

# 計算總的精度
acc = accuracy_score(actual, predicted)

# 計算混淆矩陣
confusion_matrix(actual, predicted)

結果:
在這裏插入圖片描述
由混淆矩陣計算每一類的precision、recall、F1-score:
例 class0: precision = 4/4+0+0+0 = 1; recall = 4/4+0+1+0 = 0.8; f1-score = 2 *1 *0.8/(1+0.8) = 0.89

# 計算precision, recall, F1-score, support
class_names = ['agree', 'disagree', 'discuss', 'unrelated']
print(classification_report(actual, predicted, target_names=class_names))

結果:
在這裏插入圖片描述

# 另一種=方式計算precision, recall, F1-score, support
pre, rec, f1, sup = precision_recall_fscore_support(actual, predicted)
print("precision:", pre, "\nrecall:", rec, "\nf1-score:", f1, "\nsupport:", sup)

結果:
在這裏插入圖片描述
可以看出兩種計算方式結果相同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章