Как передать Tibble в Caret :: Confusionmatrix ()? - PullRequest
0 голосов
/ 06 июня 2018

Рассмотрим простой пример:

data_frame(truth = c(1,1,0,0),
           prediction = c(1,0,1,0),
           n_obs = c(100,10,90,50))
# A tibble: 4 x 3
  truth prediction n_obs
  <dbl>      <dbl> <dbl>
1     1          1   100
2     1          0    10
3     0          1    90
4     0          0    50

Я бы хотел передать это tibble на caret::confusionMatrix, чтобы у меня были все необходимые метрики за раз (accuracy, recall,и т.д.).

Как видите, tibble содержит всю информацию, необходимую для вычисления статистики производительности.Например, вы можете видеть, что в наборе тестовых данных (недоступном здесь) есть 100 наблюдений, в которых предсказанная метка 1 соответствует истинной метке 1.Однако наблюдения 90 с прогнозируемым значением 1 были фактически ложными срабатываниями.

Я не хочу вычислять все метрики вручную и хотел бы прибегнуть к caret::confusionMatrix()

Однако это оказалось на удивление трудным.Вызов confusionMatrix(.) на tibble выше не работает.Здесь есть какое-нибудь решение?

Спасибо!

1 Ответ

0 голосов
/ 06 июня 2018

Вы можете использовать следующее.Вы должны установить положительный класс в 1, иначе 0 будет принят как положительный класс.

confusionMatrix(xtabs(n_obs ~ prediction + truth , df), positive = "1")

Confusion Matrix and Statistics

          truth
prediction   0   1
         0  50  10
         1  90 100

               Accuracy : 0.6             
                 95% CI : (0.5364, 0.6612)
    No Information Rate : 0.56            
    P-Value [Acc > NIR] : 0.1128          

                  Kappa : 0.247           
 Mcnemar's Test P-Value : 2.789e-15       

            Sensitivity : 0.9091          
            Specificity : 0.3571          
         Pos Pred Value : 0.5263          
         Neg Pred Value : 0.8333          
             Prevalence : 0.4400          
         Detection Rate : 0.4000          
   Detection Prevalence : 0.7600          
      Balanced Accuracy : 0.6331          

       'Positive' Class : 1    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...