如何重新排序意外事件 table 以在 R 中形成混淆矩阵

how to reorder the contingency table to form a confusion matrix in R

在聚类算法的应用方面,在我得到实际class和预测class的每个组合的计数的偶然性table后,例如

  1  2  3
A 2  3  15
B 20 1  4
C 0  32 1

如何编写一个函数来通过改变列的顺序来获得使对角线最大化的混淆矩阵?谢谢!

  1  2  3
A 15 2  3
B 4  20 1
C 1  0  32

我们可以使用max.col获取每行最大值的列索引,并使用它来重新排列列

m2 <- m1[,max.col(m1, 'first')]
colnames(m2) <- seq_len(ncol(m2))
m2
#   1  2  3
#A 15  2  3
#B  4 20  1
#C  1  0 32

数据

m1 <- structure(c(2L, 20L, 0L, 3L, 1L, 32L, 15L, 4L, 1L), .Dim = c(3L, 
  3L), .Dimnames = list(c("A", "B", "C"), c("1", "2", "3")))