我将使用ROCR包在R中计算准确率, 但结果与我的期望不同:
假设我有一个模型预测(p),以及以下标签(l):
但结果是0.8,根据正确率公式(TP+TN)/(TN+TP+FN+FP),应该是0.6。我不知道为什么?
假设我有一个模型预测(p),以及以下标签(l):
p <- c(0.61, 0.36, 0.43, 0.14, 0.38, 0.24, 0.97, 0.89, 0.78, 0.86)
l <- c(1, 1, 1, 0, 0, 1, 1, 1, 0, 1)
我正在使用以下命令计算这个预测的准确性:
library(ROCR)
pred <- prediction(p, l)
perf <- performance(pred, "acc")
max(perf@y.values[[1]])
但结果是0.8,根据正确率公式(TP+TN)/(TN+TP+FN+FP),应该是0.6。我不知道为什么?
max(perf@y.values[[0.5]])
吗?此外,您知道为什么我们需要使用max()
来获取这些值吗? - Zhubarbperf@y.values[[1]][max(which(perf@x.values[[1]] >= 0.5))]
。 - josliberperf@x.values=Inf 0.97 0.89 0.86 0.78 0.61 0.43 0.38 0.36 0.24 0.14
和perf@y.values=0.3 0.4 0.5 0.6 0.5 0.6 0.7 0.6 0.7 0.8 0.7
。因此,你的代码返回了cut_off=0.61
(这是大于0.5的最小截止值)的acc
,对吗? - Zhubarb