[英]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)
但是為這個多標簽分類問題找到TP
和TN
對我來說是個問題。
在 stackoverflow 上有一個與此問題類似的問題, 從精度、召回率、f1 分數計算准確度 - scikit-learn但僅適用於二進制分類問題。
注意:我嘗試了 sklearn.metrics 中的multilabel_confusion_matrix
和confusion_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.