3

我根据观察结果及其对 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

4

1 回答 1

4

试试这个然后重做你的代码:

 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)

普通矩阵方法可能不起作用,因为插入符号混淆矩阵对象是一个列表。

于 2014-03-14T16:20:57.280 回答