【问题标题】:How to calculate multiclass overall accuracy, sensitivity and specificity?如何计算多类总体准确度、敏感性和特异性?
【发布时间】:2019-09-02 06:16:18
【问题描述】:

谁能解释如何计算多类数据集的准确性、敏感性和特异性?

【问题讨论】:

    标签: machine-learning confusion-matrix multiclass-classification


    【解决方案1】:

    每个类的敏感度可以从其计算得到

    TP/(TP+FN)

    每个类的特异性可以从其计算出来

    TN/(TN+FP)

    有关概念和方程式的更多信息 http://en.wikipedia.org/wiki/Sensitivity_and_specificity

    对于多类分类,您可以使用一对一的方法。

    假设有三个类:C1、C2 和 C3

    “TP of C1”是所有归类为C1的C1实例。

    “TN of C1”是所有不属于C1的非C1实例。

    “C1的FP”是所有归类为C1的非C1实例。

    “C1的FN”是所有不属于C1的C1实例。

    要查找 C2 或 C3 的这四个术语,您可以将 C1 替换为 C2 或 C3。

    简单的一句话:

    在 2x2 中,一旦您选择了一个类别为正面,另一个类别自动为负面。有 9 个类别,您基本上有 9 种不同的敏感性,这取决于您选择的 9 个类别中的哪一个为“积极”。您可以通过折叠为 2x2 来计算这些值,即 Class1 与 not-Class1,然后 Class2 与 not-Class2,依此类推。

    示例:

    我们得到了 7 种玻璃的混淆矩阵:

    === Confusion Matrix ===
    
      a  b  c  d  e  f  g   <-- classified as
     50 15  3  0  0  1  1 |  a = build wind float
     16 47  6  0  2  3  2 |  b = build wind non-float
      5  5  6  0  0  1  0 |  c = vehic wind float
      0  0  0  0  0  0  0 |  d = vehic wind non-float
      0  2  0  0 10  0  1 |  e = containers
      1  1  0  0  0  7  0 |  f = tableware
      3  2  0  0  0  1 23 |  g = headlamps
    

    为每种类型的玻璃计算的真阳性率(敏感度),加上总体加权平均值:

    === Detailed Accuracy By Class ===
    
     TP Rate  FP Rate  Precision  Recall   F-Measure  MCC      ROC Area  PRC Area  Class
     0.714    0.174    0.667      0.714    0.690      0.532    0.806     0.667     build wind float
     0.618    0.181    0.653      0.618    0.635      0.443    0.768     0.606     build wind non-float
     0.353    0.046    0.400      0.353    0.375      0.325    0.766     0.251     vehic wind float
     0.000    0.000    0.000      0.000    0.000      0.000    ?         ?         vehic wind non-float
     0.769    0.010    0.833      0.769    0.800      0.788    0.872     0.575     containers
     0.778    0.029    0.538      0.778    0.636      0.629    0.930     0.527     tableware
     0.793    0.022    0.852      0.793    0.821      0.795    0.869     0.738     headlamps
     0.668    0.130    0.670      0.668    0.668      0.539    0.807     0.611     Weighted Avg.  
    

    【讨论】:

    • 查看结果,如果您选择不同的类作为阳性,性能明显不同。在这种情况下,选择作为整体绩效报告的正确方法是什么?
    【解决方案2】:

    您可以从下面的链接打印分类报告,您将获得模型的整体准确性。

    https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report

    计算多分类的敏感性和特异性

    from sklearn.metrics import precision_recall_fscore_support
    res = []
    for l in [0,1,2,3]:
         prec,recall,_,_ = precision_recall_fscore_support(np.array(y_true)==l,
                                                      np.array(y_prediction)==l,
                                                      pos_label=True,average=None)
         res.append([l,recall[0],recall[1]])
    
    pd.DataFrame(res,columns = ['class','sensitivity','specificity'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 2021-10-05
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      相关资源
      最近更新 更多