Визуализируйте матрицу путаницы с помощью пакета Caret в R

  1. Используйте функцию confusionMatrix для создания матрицы неточностей в R
  2. Используйте функцию fourfoldplot, чтобы визуализировать матрицу путаницы в R
  3. Используйте функцию autoplot для визуализации матрицы путаницы в R

В этой статье будет продемонстрировано несколько методов визуализации матрицы путаницы с использованием пакета caret в R.

Используйте функцию confusionMatrix для создания матрицы неточностей в R

Функция confusionMatrix является частью пакета caret и может создавать матрицу неточностей из факторов или типов данных таблицы. Обратите внимание, что мы конструируем два случайных фактора, используя функции sample и rep. confusionMatrix принимает фактор предсказанных классов в качестве первого аргумента и фактор классов, которые будут использоваться в качестве истинных результатов, в качестве второго.

library(caret)

confusionMatrix(
  factor(sample(rep(letters[1:4], 200), 50)),
  factor(sample(rep(letters[1:4], 200), 50)))  
Confusion Matrix and Statistics

          Reference
Prediction a b c d
         a 2 5 6 2
         b 3 2 4 2
         c 3 5 2 2
         d 5 1 2 4

Overall Statistics

               Accuracy : 0.2             
                 95% CI : (0.1003, 0.3372)
    No Information Rate : 0.28            
    P-Value [Acc > NIR] : 0.9260          

                  Kappa : -0.0672         

 Mcnemar's Test P-Value : 0.7795          

Statistics by Class:

                     Class: a Class: b Class: c Class: d
Sensitivity            0.1538   0.1538   0.1429   0.4000
Specificity            0.6486   0.7568   0.7222   0.8000
Pos Pred Value         0.1333   0.1818   0.1667   0.3333
Neg Pred Value         0.6857   0.7179   0.6842   0.8421
Prevalence             0.2600   0.2600   0.2800   0.2000
Detection Rate         0.0400   0.0400   0.0400   0.0800
Detection Prevalence   0.3000   0.2200   0.2400   0.2400
Balanced Accuracy      0.4012   0.4553   0.4325   0.6000

Используйте функцию fourfoldplot, чтобы визуализировать матрицу путаницы в R

Функция confusionMatrix выводит текстовые данные, но мы можем визуализировать их часть с помощью функции fourfoldplot. fourfoldplot строит четырехкратный граф с таблицей непредвиденных обстоятельств два на два по k. Таблица непредвиденных обстоятельств должна быть передана в виде массива или в виде матрицы 2x2, если k равно 1. Обратите внимание, что следующий пример демонстрирует использование четырехкратного графика с жестко закодированными табличными данными.

ctable <- as.table(matrix(c(42, 6, 8, 28), nrow = 2, byrow = TRUE))
fourfoldplot(ctable, color = c("cyan", "pink"),
             conf.level = 0, margin = 1, main = "Confusion Matrix")

визуализировать матрицу путаницы 1

С другой стороны, мы можем сохранить confusionMatrix как объект и передать член table из него в fourfoldplot для визуализации матрицы путаницы.

library(caret)

cmat <- confusionMatrix(
  factor(sample(rep(letters[1:2], 200), 50)),
  factor(sample(rep(letters[1:2], 200), 50)))  

fourfoldplot(cmat$table, color = c("cyan", "pink"),
             conf.level = 0, margin = 1, main = "Confusion Matrix")

визуализировать матрицу путаницы 2

Используйте функцию autoplot для визуализации матрицы путаницы в R

В качестве альтернативы мы можем использовать функцию autoplot из пакета ggplot2 для отображения матрицы неточностей. В этом случае мы строим матрицу с функцией conf_mat, которая создает объект класса conf_mat, который может быть напрямую передан в качестве первого аргумента функции autoplot. Последний автоматически решает нарисовать соответствующий график для объекта.

library(yardstick)
library(ggplot2)

set.seed(123)
truth_predicted <- data.frame(
  obs = sample(0:1,100, replace = T),
  pred = sample(0:1,100, replace = T)
)
truth_predicted$obs <- as.factor(truth_predicted$obs)
truth_predicted$pred <- as.factor(truth_predicted$pred)

cm <- conf_mat(truth_predicted, obs, pred)

autoplot(cm, type = "heatmap") +
  scale_fill_gradient(low = "pink", high = "cyan")

визуализировать матрицу путаницы 3

Сопутствующая статья - R Matrix

  • Нормализовать значения в матрице R