我将两个无监督算法应用于相同的数据,并希望从结果中产生一个混淆矩阵,我应该如何在 R 中实现它?
R代码的示例如下:
xx.1 <- c(41, 0, 4, 0, 0, 0, 0, 0, 0, 7, 0, 11, 8, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 0, 4)
xx.2 <- matrix(xx.1, nrow = 5)
rownames(xx.2) <- paste("Algo1", 1:5, sep = "_")
colnames(xx.2) <- paste("Algo2", 1:5, sep = "_")
xx.2
xx.2是两种算法的预测结果,数字显示有多少观察被归类为Algo1_X和Algo2_X:
Algo2_1 Algo2_2 Algo2_3 Algo2_4 Algo2_5
Algo1_1 41 0 0 0 0
Algo1_2 0 0 11 0 1
Algo1_3 4 0 8 0 1
Algo1_4 0 0 0 3 0
Algo1_5 0 7 0 0 4
问题是,如何使用Algo1的结果作为参考来重新排列矩阵以获得混淆矩阵?有两个问题:
确定两种算法之间的对应关系,即我认为最相似的分类应该配对的方法;
重新排列矩阵,使对话框的交叉值最大。
此处,Algo2_1和Algo1_1具有最大的交叉值,它们是一对;然后Algo1_2和Algo2_3应该是一对,因为它们在左列/行中具有第二大值,因此Algo2_3应该移动到第二列。
我怎么能在R中轻松完成?或者有可用于此目的的包裹?
谢谢!