我的混淆矩阵有以下结构:
(Predicted)
C= ( actual) [TN FP
FN TP]
如何计算表示为MCC = (TP .* TN - FP .* FN) ./ ... sqrt( (TP + FP) .* (TP + FN) .* (TN + FP) .* (TN + FN) );
的多类的Mathews相关系数(MCC)值
另外,我对以下多类措施的计算也有一些疑问.请纠正我哪里错了。
for i=1:nClasses
TN(i)=C(i,i);
FP(i)=sum(C(i,:))-C(i,i);
FN(i)=sum(C(:,i))-C(i,i);
TP(i)=sum(C(:))-TP(i)-FP(i)-FN(i);
end
发布于 2021-01-23 04:26:22
正如您所看到的,这个MCC公式是用于二进制分类的,因此您只能通过将问题视为二进制来计算其结果。
编辑以澄清OP的混淆什么是混淆矩阵?它显示了对于每一个真正的类作为一行,对于每个预测的类作为一列,有多少实例具有真正的类,并被预测为。如果只有两个类(二进制分类),则唯一的可能性是
然而,当有两个以上的类(多类分类)时,不可能直接使用这种区分正/负,因此没有一般的TP,FP,FN,TN的情况。
对于多个类,可以计算每个类的二进制分类度量。这是通过将目标类视为正类而将所有其他类视为负面类(就像将它们合并为一个大的负面类一样)来实现的。
例如:假设我们有A、B、C类,如果我们关注A类,那么混淆矩阵如下所示:
A B C
A TP FN FN
B FP TN TN
C FP TN TN
以另一种方式呈现出来:
A B or C
A TP FN
B or C FP TN
现在,如果我们关注B类,那么混淆矩阵就变成:
A B C
A TN FP TN
B FN TP FN
C TN FP TN
在您的代码中,TP和TN类别被交换:
TP(i)=C(i,i);
...
TN(i)=sum(C(:))-TP(i)-FP(i)-FN(i);
https://datascience.stackexchange.com/questions/88353
复制相似问题