是否有任何工具/R 包可用于计算 R 中混淆矩阵的准确性和精度?
4 回答
是的,您可以使用混淆矩阵计算 R 中的 Accuracy 和precision 。它使用Caret 包。
这是示例:
lvs <- c("normal", "abnormal")
truth <- factor(rep(lvs, times = c(86, 258)),
levels = rev(lvs))
pred <- factor(
c(
rep(lvs, times = c(54, 32)),
rep(lvs, times = c(27, 231))),
levels = rev(lvs))
xtab <- table(pred, truth)
# load Caret package for computing Confusion matrix
library(caret)
confusionMatrix(xtab)
xtab的混淆矩阵是这样的:
Confusion Matrix and Statistics
truth
pred abnormal normal
abnormal 231 32
normal 27 54
Accuracy : 0.8285
95% CI : (0.7844, 0.8668)
No Information Rate : 0.75
P-Value [Acc > NIR] : 0.0003097
Kappa : 0.5336
Mcnemar's Test P-Value : 0.6025370
Sensitivity : 0.8953
Specificity : 0.6279
Pos Pred Value : 0.8783
Neg Pred Value : 0.6667
Prevalence : 0.7500
Detection Rate : 0.6715
Detection Prevalence : 0.7645
'Positive' Class : abnormal
所以这里有你想要的一切。
@Harsh Trivedi
byClass允许您从摘要中提取精度和召回率。PPV 是精确的。敏感性是回忆。https://en.wikipedia.org/wiki/Precision_and_recall
library(caret)
result <- confusionMatrix(prediction, truth)
precision <- result$byClass['Pos Pred Value']
recall <- result$byClass['Sensitivity']
我想你想提取精度和召回率来计算f 度量,所以就这样吧。
f_measure <- 2 * ((precision * recall) / (precision + recall))
我还发现了这个方便的在线计算器进行健全性检查。 http://www.marcovanetti.com/pages/cfmatrix/?noc=2
-bg
如果有人遇到与我相同的问题,则该方法confusionMatrix()
确实caret
提供了敏感性/特异性。但是,如果它被输入一个类型的对象,train
它将运行一个不同的方法,confusionMatrix.train()
它没有这个信息。
解决方案是从对象(即和分别)手动将data
和提供给方法。reference
train
$pred$pred$
$pred$obs
confusionMatrix()
万一其他人正在寻找:感谢上面 BGA 的回答,我对如何读取confusionMatrix()
输出有了更清楚的了解,并意识到您可以直接从输出中获取 F 测量值result$ByClass
作为 F1。
result$byClass
Sensitivity Specificity Pos Pred Value Neg Pred Value
0.9337442 0.8130531 0.8776249 0.8952497
Precision Recall F1 Prevalence
0.8776249 0.9337442 0.9048152 0.5894641
Detection Rate Detection Prevalence Balanced Accuracy
0.5504087 0.6271571 0.8733987
f_measure
使用与上述评论相同的公式计算下面也给出 0.9048152。
您还可以从results$overall
result$overall
Accuracy Kappa AccuracyLower AccuracyUpper AccuracyNull AccuracyPValue
8.841962e-01 7.573509e-01 8.743763e-01 8.935033e-01 5.894641e-01 0.000000e+00
McnemarPValue
2.745521e-13
或使用来自的平衡精度results