如何重新排列列联表以形成R中的混淆矩阵

如何重新排列列联表以形成R中的混淆矩阵,r,function,confusion-matrix,R,Function,Confusion Matrix,在聚类算法的应用方面,比如在我得到了实际类和预测类的每个组合的计数列联表之后 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) <- s

在聚类算法的应用方面,比如在我得到了实际类和预测类的每个组合的计数列联表之后

  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

m2只需更改列的顺序,我的意思是,c(2,20,0),c(3,1,32),c(15,4,1)将始终是三列扫描您请检查下面的解决方案是否符合您想象的正确逻辑
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")))