代码之家  ›  专栏  ›  技术社区  ›  SamuelNLP

R中的序混淆矩阵

  •  3
  • SamuelNLP  · 技术社区  · 12 年前

    我已经在3个班级中根据观察和预测创建了一个混淆矩阵。

    classes=c("Underweight", "Normal", "Overweight")
    

    当我计算混淆矩阵时,它按字母顺序组织表中的类。这是我的代码。

    # Confusion matrix
    Observations <- bmi_classification(cross.m$bmi)
    Predicted <- bmi_classification(cross.m$cvpred)
    
    conf <- table(Predicted, Observations)
    
    library(caret) 
    f.conf <- confusionMatrix(conf)
    print(f.conf)
    

    这将产生以下输出:

    Confusion Matrix and Statistics
    
                 Observations
    Predicted     Normal Overweight Underweight
      Normal          17          0           1
      Overweight       1          4           0
      Underweight      1          0           1
    

    所以,我希望先是超重,然后是正常,最后是超重。我试图将顺序作为一个参数传递给矩阵,但没有成功。

    编辑:

    我试着重新排序,

    conf <- table(Predicted, Observations)
    
    reorder = matrix(c(9, 7, 8, 3, 1, 2, 6, 4, 5), nrow=3, ncol=3)
    
    conf.reorder <- conf[reorder]
    

    但我得到了, [1] 1 1 0 1 17 1 0 0 4

    1 回复  |  直到 9 年前
        1
  •  4
  •   IRTFM    12 年前

    尝试此操作,然后重做代码:

     cross.m$Observations <- factor( cross.m$Observations, 
                                  levels=c("Underweight","Normal","Overweight") )
     cross.m$Predicted<- factor( cross.m$Predicted, 
                                  levels=c("Underweight","Normal","Overweight") )
    conf <- table(Predicted, Observations)
    
    library(caret) 
    f.conf <- confusionMatrix(conf)
    print(f.conf)
    

    由于 caret confusion matrix object is a list.