[英]How to do a classification_report and a confusion_matrix from the predict_generator output using a segmentation images dataset ? ( Keras Tensorflow)
[英]classification_report using confusion matrix
我們有我的 ML 模型的混淆矩陣。
array([[508, 12],
[ 78, 36]])
我們也有classification_report
precision recall f1-score support
0 0.83 0.98 0.90 123
1 0.85 0.31 0.45 36
accuracy 0.83 159
macro avg 0.84 0.64 0.67 159
weighted avg 0.83 0.83 0.80 159
為了理解這個 ML 解決方案的功效,我們為傳統構建的系統生成了一個混淆矩陣
array([[305, 62],
[ 108, 50]])
有沒有辦法從中生成classification_report
? 標准功能而非編碼,確保一致性。
我建議你在這里閱讀這篇文章https://towardsdatascience.com/beyond-accuracy-precision-and-recall-3da06bea9f6c 。 根據混淆矩陣中的值,您可以計算真陽性、真陰性、假陽性和假陰性。 之后,您可以計算使用它們的任何指標。
我找到了一個代碼示例( 來源)
def evaluate(self, dataset):
predictions = self.predict(dataset[:,0])
confusion_matrix = sklearn_confusion_matrix(dataset[:,1], predictions, labels=self.__classes)
precisions = []
recalls = []
accuracies = []
for gender in self.__classes:
idx = self.__classes_indexes[gender]
precision = 1
recall = 1
if np.sum(confusion_matrix[idx,:]) > 0:
precision = confusion_matrix[idx][idx]/np.sum(confusion_matrix[idx,:])
if np.sum(confusion_matrix[:, idx]) > 0:
recall = confusion_matrix[idx][idx]/np.sum(confusion_matrix[:, idx])
precisions.append(precision)
recalls.append(recall)
precision = np.mean(precisions)
recall = np.mean(recalls)
f1 = (2*(precision*recall))/float(precision+recall)
accuracy = np.sum(confusion_matrix.diagonal())/float(np.sum(confusion_matrix))
return precision, recall, accuracy, f1
在代碼中,您可以看到如何創建混淆矩陣並得出分數。 我知道您已經有了矩陣,所以也許您可以看看第二部分,並嘗試了解如何僅使用矩陣來計算分數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.