簡體   English   中英

使用混淆矩陣的分類報告

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM