R创建2*2混淆矩阵的通用解决方案

R创建2*2混淆矩阵的通用解决方案,r,confusion-matrix,R,Confusion Matrix,我的问题与使用table()函数在R中生成混淆矩阵有关。我正在寻找不使用软件包(如插入符号)的解决方案 假设这些是我们在二元分类问题中的预测和标签: predictions <- c(0.61, 0.36, 0.43, 0.14, 0.38, 0.24, 0.97, 0.89, 0.78, 0.86, 0.15, 0.52, 0.74, 0.24) labels <- c(1, 1, 1, 0, 0, 1, 1, 1, 0

我的问题与使用
table()
函数在R中生成混淆矩阵有关。我正在寻找不使用软件包(如插入符号)的解决方案

假设这些是我们在二元分类问题中的
预测
标签

predictions <- c(0.61, 0.36, 0.43, 0.14, 0.38, 0.24, 0.97, 0.89, 0.78, 0.86, 0.15,  0.52, 0.74, 0.24)
labels      <- c(1,    1,    1,    0,    0,     1,    1,    1,    0,     1,    0,    0,    1,    0)

我需要一种方法,能够为0和1之间的所有可能阈值(决策边界)一致地生成2*2混淆矩阵,因为我将此作为优化中的输入。有没有办法调整
函数,使其始终返回2*2矩阵?

您可以将阈值预测作为因子变量来实现这一点:

(conf_matrix <- as.matrix(table(factor(predictions>0.05, levels=c(F, T)), labels)))
#        labels
#         0 1
#   FALSE 0 0
#   TRUE  6 8
(形态矩阵0.05,等级=c(F,T)),标签)
#标签
#         0 1
#假0 0
#真实6 8

是的,谢谢!。我尝试使用
table()
参数,如
dnn
exclude
。但是相反,我应该建立一个新的因子来解释这个不存在的类。
conf_matrix <- as.matrix(table(predictions>0.05,labels))
  conf_matrix
     labels
       0 1
  TRUE 6 8
(conf_matrix <- as.matrix(table(factor(predictions>0.05, levels=c(F, T)), labels)))
#        labels
#         0 1
#   FALSE 0 0
#   TRUE  6 8