我有两列:一列代表预测值,另一列代表真实值。
我想计算这些列之间的精度,如果两列都有缺失值,则使缺失值计数为true。
所以什么时候
Pred True
1 2
2 2
NA NA
3 2
准确度为50%。
另外,我该如何对字符值做同样的事情?
答案 0 :(得分:2)
您可以这样做:
pred <- c(1,2,NA,3)
true <- c(2,2,NA,2)
(sum(pred==true, na.rm=T) + sum(is.na(pred) & is.na(true))) / length(pred)
即,将pred
和true
等于sum(pred==true, na.rm=T)
的次数加上它们都是NA
值sum(is.na(pred) & is.na(true))
的次数。除以向量长度。
答案 1 :(得分:1)
您可以执行以下操作:
sum(data$Pred == data$True, na.rm = T) / nrow(data) *100
以您定义它的方式获得准确性。它适用于整数和字符串。问题是,您无法真正比较NA,因此,如果两列都具有给定行的NA,而您实际上认为这是一个准确的预测,则需要分别计算这些实例。例如,您可以只获取两列均为NA的索引的并集,并将其添加到总和中:
s <- sum(data$Pred == data$True, na.rm = T)
na <- length(union(which(is.na(data$Pred)), which(is.na(data$True))))
(s + na) / nrow(data) * 100