簡體   English   中英

在多標簽分類問題中獲取每個類別的准確性

[英]Getting accuracy for each category in a multi-label classification problem

我需要計算多標簽分類問題中每個類別的准確度(而不是整體准確度)。 使用scikit-learn庫中的classification_report報告很容易找到每個類別的准確率、召回率和 F 分數。 共有13個類別分布如下:

                   precision    recall  f1-score   support

     Category 1       0.58      0.48      0.53       244
     Category 2       0.91      0.85      0.88       728
     Category 3       0.90      0.92      0.91      1319
     Category 4       0.70      0.55      0.62       533
     Category 5       1.00      0.10      0.18        20
     Category 6       0.94      0.84      0.89      2038
     Category 7       0.83      0.78      0.80      1930
     Category 8       0.85      0.44      0.58       113
     Category 9       0.88      0.87      0.87      1329
     Category 10      0.79      0.54      0.64        61
     Category 11      0.81      0.77      0.79       562
     Category 12      0.71      0.62      0.66       416
     Category 13      0.76      0.60      0.67       500

      micro avg       0.86      0.78      0.82      9793
      macro avg       0.82      0.64      0.69      9793
   weighted avg       0.85      0.78      0.81      9793
    samples avg       0.86      0.82      0.83      9793

我知道准確度可以如下找到: Accuracy=(TP+TN)/(TP+TN+FP+FN)但是為這個多標簽分類問題找到TPTN對我來說是個問題。

在 stackoverflow 上有一個與此問題類似的問題, 從精度、召回率、f1 分數計算准確度 - scikit-learn但僅適用於二進制分類問題。

注意:我嘗試了 sklearn.metrics 中的multilabel_confusion_matrixconfusion_matrix來提取混淆矩陣,但都給了我相同的以下錯誤: ValueError: Classification metrics can't handle a mix of multilabel-indicator and continuous-multioutput targets

有任何想法嗎?

您可以使用以下代碼從原始 arrays 手動計算每類精度:

class_accuracies = []
for class_ in np.unique(y_true):
    class_acc = np.mean(y_pred[y_true == class_] == class_)
    class_acuracies.append(class_acc)

根據 label 檢查公式的准確性。 在多標簽分類器中,您可以找到每個標簽(類)的准確度和每個實例的准確度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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