按组计算准确度

Sau*_*cia 3 r confusion-matrix tapply dplyr

我有一个如下所示的数据框:

df<- data.frame("iteration" = c(1,1,1,1,1,1), 
    "model" = c("RF","RF","RF","SVM", "SVM","SVM"),
    "label" = c(0,0,1,0,0,1), "prediction" = c(0,1,1,0,1,1))

  iteration model label prediction
1         1    RF     0          0
2         1    RF     0          1
3         1    RF     1          1
4         1   SVM     0          0
5         1   SVM     0          1
6         1   SVM     1          1
Run Code Online (Sandbox Code Playgroud)

实际上,它有10 iterations更多的模型和每个模型的更多数据。

我想要做的基本上是获得每个模型的准确性。

所以基本上我想把它应用到每个模型组(RF,SVM):

table(df$label,df$prediction)

    0 1
  0 2 2
  1 0 2
Run Code Online (Sandbox Code Playgroud)

他们对对角线求和并除以总数:

sum(diag(table(df$label,df$prediction)))/sum(table(df$label,df$prediction))
[1] 0.6666667
Run Code Online (Sandbox Code Playgroud)

这是我可以使用的情况tapply还是dplyr派上用场?

我在这里很迷茫。

Ste*_*pré 5

尝试:

library(dplyr)

df %>% 
  group_by(iteration, model) %>% 
  summarise(accuracy = sum(label == prediction) / n())
Run Code Online (Sandbox Code Playgroud)

这使:

#Source: local data frame [2 x 3]
#Groups: iteration [?]
#
#  iteration  model  accuracy
#      (dbl) (fctr)     (dbl)
#1         1     RF 0.6666667
#2         1    SVM 0.6666667
Run Code Online (Sandbox Code Playgroud)

想法是将label == prediction返回的次数相加TRUE并除以分区的大小n()