我有 4 个类用于动物界分类的应用:1 --> 无脊椎动物;2 --> 脊椎动物;3--> 哺乳动物;4 ---> 两栖动物。给定混合图像,目标是正确识别哺乳动物。在此示例的混淆矩阵中,TP 是否表示第 3 类(哺乳动物)?
Q1:所以,一般TP是最重要的class类别吗?如果所有的类都同等重要,那么如何表示 TP 和 TN?
Q2:F1成绩如何计算?应该为每个班级单独完成吗?如果那么每个班级都会有多个TN!
有人可以帮助消除这些困惑吗?谢谢你。
我有 4 个类用于动物界分类的应用:1 --> 无脊椎动物;2 --> 脊椎动物;3--> 哺乳动物;4 ---> 两栖动物。给定混合图像,目标是正确识别哺乳动物。在此示例的混淆矩阵中,TP 是否表示第 3 类(哺乳动物)?
Q1:所以,一般TP是最重要的class类别吗?如果所有的类都同等重要,那么如何表示 TP 和 TN?
Q2:F1成绩如何计算?应该为每个班级单独完成吗?如果那么每个班级都会有多个TN!
有人可以帮助消除这些困惑吗?谢谢你。
在多类问题中,每个类都有一个分数,将任何其他类计为负数。
例如对于第 1 类:
换句话说,该问题被评估为就好像它是每个类别的二元分类问题一样。对每个类独立地执行相同的过程(因为实例的状态取决于目标类),每个类获得不同的 F1 分数。
之后,通常计算宏观 F1 分数或微观 F1 分数(或两者)以获得整体性能统计数据。
如果给定混合图像,目标是正确识别哺乳动物,那么这是一个二元分类问题,哺乳动物与非哺乳动物。
混淆矩阵将是 2 乘 2。像这样的东西,想象这里的欺诈是哺乳动物。
如果所有类都同样重要,那么这是一个多分类问题。混淆矩阵将是 n × n。
下面是一个 3 x 3 的示例,您的情况类似,但 4 x 4。
至于多分类的 F1 分数,您可以使用classification_report()from scikit-learn。
from sklearn.metrics import classification_report
print(classification_report(new_y_test,new_y_test_pred))
再次,输出将是这样的,对于您的情况,假设有一个 3 类
precision recall f1-score support
0 0.98 0.98 0.98 563729
1 0.47 0.39 0.42 22439
2 0.70 0.86 0.77 3822
accuracy 0.96 589990
macro avg 0.71 0.74 0.72 589990
weighted avg 0.95 0.96 0.96 589990