我将两种无监督算法应用于相同的数据,并想从结果中制作一个混淆矩阵,我应该如何在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 中轻松做到这一点?或者有用于此目的的软件包?
谢谢!