需要将confepMatrix从插入符号应用于已经计算的混淆矩阵

时间:2018-03-23 09:20:59

标签: r confusion-matrix

我有一个混淆矩阵,用另一个保存在文本文件中的软件计算出来。此文件中没有4个类。我们可以参考C1,C2,C3,C4类。输入文件 conf_mat.txt 的内容如下所示:

830 0 10 0

0 1262 18 0

3 37 1262 18

1 0 5 1314

我读了如下文件:

cm <- read.table("conf_mat.txt")

如下所示:

   V1   V2   V3   V4
1 830    0   10    0
2   0 1262   18    0
3   3   37 1262   18
4   1    0    5 1314

我需要使用 byClass 从这个矩阵中计算出来自灵敏度,特异度,F1等的统计数据,因此 confusionMatrix 非常有用。但我依次没有每个样本的实际预测的列表。

1 个答案:

答案 0 :(得分:0)

如果以后这可能对某人有所帮助,这就是我找到的答案。

我根据输入混淆矩阵的列构建了类:

class0 <- rep(c('C0', 'C1', 'C2', 'C3'), cm[,1])
class1 <- rep(c('C0', 'C1', 'C2', 'C3'), cm[,2])
class2 <- rep(c('C0', 'C1', 'C2', 'C3'), cm[,3])
class3 <- rep(c('C0', 'C1', 'C2', 'C3'), cm[,4])

我使用正确的类创建了一个数组:

trueClass <- c(rep('C0', sum(cm[,1])), rep('C1', sum(cm[,2])), rep('C2', sum(cm[,3])), rep('C3', sum(cm[,4])))

一个有预测的人:

predictedClass <- c(class0, class1, class2, class3)

然后将confusionMatrix应用于两个数组

newCM <- confusionMatrix(predictedClass, trueClass)
newCM

这会导致从文本文件中读取的混淆矩阵相同,但会计算其他统计信息。

Confusion Matrix and Statistics
              Reference
    Prediction   C0   C1   C2   C3
            C0  830    0   10    0
            C1    0 1262   18    0
            C2    3   37 1262   18
            C3    1    0    5 1314

    Overall Statistics

                   Accuracy : 0.9807          
                     95% CI : (0.9763, 0.9844)
        No Information Rate : 0.2798          
        P-Value [Acc > NIR] : < 2.2e-16       

                      Kappa : 0.974           
     Mcnemar's Test P-Value : NA              

    Statistics by Class:

                         Class: C0 Class: C1 Class: C2 Class: C3
    Sensitivity             0.9952    0.9715    0.9745    0.9865
    Specificity             0.9975    0.9948    0.9833    0.9982
    Pos Pred Value          0.9881    0.9859    0.9561    0.9955
    Neg Pred Value          0.9990    0.9894    0.9904    0.9948
    Prevalence              0.1752    0.2729    0.2721    0.2798
    Detection Rate          0.1744    0.2651    0.2651    0.2761
    Detection Prevalence    0.1765    0.2689    0.2773    0.2773
    Balanced Accuracy       0.9963    0.9832    0.9789    0.9924