15

我有一个数据框。第一列包含我的模型的预测分数(范围从 0 到 100,较小的值应在 A 类中,较大的值应在 B 类中),第二列包含条目的真实分类(“ A 级”或“B 级”)。

如何使用 R 获得不同截止值的混淆矩阵,因为我无法决定应该在哪里将值 < 20 或 < 50 定义为 A 类?

如何用 R 有效地进行这种比较?

4

1 回答 1

22

有很多方法可以做到这一点,一个可重现的数据示例是可取的:

set.seed(12345)
test <- data.frame(pred=c(runif(50,0,75),runif(50,25,100)), group=c(rep("A",50), rep("B",50)) )
table(test$pred<50,test$group)

         A  B
  FALSE 18 34
  TRUE  32 16

所以这表示 32 个 A 低于 50,34 个 B 超过 50,而 18 个 A 超过 50(分类错误),16 个 B 低于 50(分类错误)

set.seed(12345)
test <- data.frame(pred=c(runif(50,0,60),runif(50,40,100)), group=c(rep("A",50), rep("B",50)) )
table(test$pred<50,test$group)

         A  B
  FALSE  8 40
  TRUE  42 10

在此示例中,由于选择了抽样,您的分类要好得多。

然后可以将其中的“50”更改为您想要的任何值,20、30 等。

table(test$pred<50,test$group)
于 2011-07-08T04:23:22.840 回答