0

我将两种无监督算法应用于相同的数据,并想从结果中制作一个混淆矩阵,我应该如何在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 的结果作为参考来重新排列矩阵以获得混淆矩阵?有两个问题:

  1. 确定两种算法之间的对应关系,即我认为最相似的分类应该配对的方法;

  2. 矩阵重新排列,使对话线具有最大的相交值。

这里,Algo2_1 和 Algo1_1 的交叉值最大,它们是一对;那么 Algo1_2 和 Algo2_3 应该是一对,因为它们在左列/行中的值第二大,所以 Algo2_3 应该移动到第二列。

我怎么能在 R 中轻松做到这一点?或者有用于此目的的软件包?

谢谢!

4

0 回答 0