我有一个数据框。第一列包含我的模型的预测分数(范围从 0 到 100,较小的值应在 A 类中,较大的值应在 B 类中),第二列包含条目的真实分类(“ A 级”或“B 级”)。
如何使用 R 获得不同截止值的混淆矩阵,因为我无法决定应该在哪里将值 < 20 或 < 50 定义为 A 类?
如何用 R 有效地进行这种比较?
我有一个数据框。第一列包含我的模型的预测分数(范围从 0 到 100,较小的值应在 A 类中,较大的值应在 B 类中),第二列包含条目的真实分类(“ A 级”或“B 级”)。
如何使用 R 获得不同截止值的混淆矩阵,因为我无法决定应该在哪里将值 < 20 或 < 50 定义为 A 类?
如何用 R 有效地进行这种比较?
有很多方法可以做到这一点,一个可重现的数据示例是可取的:
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)