Есть ли какой-либо пакет инструментов /R для вычисления точности и точности матрицы путаницы в R?
Вычислить точность и точность матрицы путаницы в R
Ответ 1
да, вы можете рассчитать Точность и точность в R с помощью путаницы. Он использует пакет 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)
И Матрица Confusion для 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 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
Итак, вот все, чего вы хотите.
Ответ 2
@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
Ответ 3
В случае, если кто-либо имеет ту же проблему, что и я, метод confusionMatrix()
в caret
действительно дает чувствительность/специфичность. Однако, если он загружен объектом типа train
, он будет запускать другой метод, confusionMatrix.train()
, который имеет не эту информацию.
Решение состоит в том, чтобы вручную передать data
и reference
из объекта train
(т.е. $pred$pred$
и $pred$obs
) в метод confusionMatrix()
.
Ответ 4
В случае, если кто-то еще ищет: благодаря ответу 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