我有3个问题:
1)
sklearn的混淆矩阵如下:
TN | FP
FN | TP
当我查看在线资源时,我发现它是这样的:
TP | FP
FN | TN
我应该考虑哪个?
2)
由于上述scikit学习的混淆矩阵与我在其他解决方案中发现的混淆矩阵不同,因此在多类混淆矩阵中,结构将是什么?我在这里看这篇文章: Scikit-learn: How to obtain True Positive, True Negative, False Positive and False Negative 在该帖子中,@ lucidv01d发布了一个图表,以了解多类的类别。 scikit learning中的类别是否相同?
3)
您如何计算多分类的准确性?例如,我有这个混淆矩阵:
[[27 6 0 16]
[ 5 18 0 21]
[ 1 3 6 9]
[ 0 0 0 48]]
在我提到问题2的同一篇文章中,他写了这个等式:
ACC =(TP + TN)/(TP + FP + FN + TN)
但这不只是二进制文件吗?我的意思是,我应该在哪个班级上取代TP?
答案 0 :(得分:1)
sklearn之所以显示出混乱矩阵的原因
TN | FP
FN | TP
之所以这样,是因为在他们的代码中,他们将0视为否定类,而将1视为肯定类。 sklearn始终认为较小的数字为负,较大的数字为正。用数字表示的是类值(0或1)。顺序取决于您的数据集和类。
准确度是对角线元素之和除以所有元素之和。p对角线元素是正确预测的数量。
答案 1 :(得分:1)
sklearn guide说:“(维基百科和其他参考文献可能对轴使用不同的约定)”
是什么意思?在构建混淆矩阵时,第一步是确定将预测值和实际值(真实标签)放在何处。有两种可能性:
完全主观决定您要走的路。从中的here这张图片可以清楚地看出,scikit-learn的约定是将预测放在列中,将真实标签放在行中。
因此,根据scikit-learns约定,它的意思是:
基于这些信息,我认为您将能够解决问题的第1部分和第2部分。
对于第3部分,您只需将对角线上的值相加,然后除以所有元素的总和,即
(27 + 18 + 6 + 48)/(27 + 18 + 6 + 48 + 6 + 16 + 5 + 21 + 1 + 3 + 9)
或者您可以只使用score()函数。
答案 2 :(得分:1)