如何从混淆矩阵计算准确率

5
我正在使用 table 显示来自kmeans聚类与实际类值的结果。
如何基于该表计算百分比准确率。我知道如何手动完成。
Iris-setosa在集群2中全部有50个,而Iris-versicolor在另一个集群中有两个。
是否有一种计算方式可以像这样计算%: 错误分类实例:52% 我想按课程和集群打印混乱矩阵。例如:
   0   1  <-- assigned to cluster
 380 120 | 1
 135 133 | 0

Cluster 0 <-- 1
Cluster 1 <-- 0

Incorrectly clustered instances :   255.0    33.2031 %

你能否发布一些示例数据并展示期望的结果是什么样子?prop.table - rmuc8
1个回答

5
你可以使用 diag() 选择对角线上的案例,并使用以下方法计算(不)准确性:
sum(diag(d))/sum(d) #overall accuracy
1-sum(diag(d))/sum(d) #incorrect classification 

你可以使用这个来计算分类正确(或错误)的案例数量:
sum(diag(d)) #N cases correctly classified
sum(d)-sum(diag(d)) #N cases incorrectly classified

where d 是您的混淆矩阵


1
如果存在标签切换问题,则此解决方案无法正常工作。例如:set.seed(1); x <- sample(c(1, 2, 3), 20, replace=TRUE); y <- 4 - x; sum(diag(table(y,x))) # = 7,这是完全错误的。 - Mamoun Benghezal
在你的示例中,7是预期值。 diag 捕获了对角线,其中 x 和 y“匹配”(即,1,1;2,2;和 3,3),这是捕获准确度所需的。这对应于 [1] 0,[2] 7 和 [3] 0,总和为7。 - User7598
1
这是错误的,因为在这个例子中,准确性应该在[1, 3]+[2, 2] + [3, 1]上求和,这就是为什么diag不够用。 - Mamoun Benghezal
哦,这不是OP要求的混淆矩阵的典型解释。请参阅http://en.m.wikipedia.org/wiki/Confusion_matrix。 - User7598

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接