解题思路
本题要求在多分类场景下,基于混淆矩阵(Confusion Matrix)的四种计数(TP/FP/FN/TN)计算每个类别的 Precision、Recall、F1 Score,并按给定权重 weights 做加权平均后输出整体指标。
相关算法与核心公式(逐类 one-vs-rest 方式统计):
- 构建每个类别的 TP / FP / FN
对于类别
c(c 从 0 到 K-1,K = len(weights)):
P4538.第2题-基于混淆矩阵,推导分类模型的核心评估指标
题目内容
混淆矩阵是分类模型评估中的核心工具,尤其适用于多分类问题。它以矩阵形式展示每个类别的真正例 (TP)、假正例 (FP)、真负例 (TN) 和假负例 (FN)。基于混淆矩阵,可以计算精确率 (Precision)、召回率 (Recall) 和 F1 分数 (F1 Score) 等指标,
详细说明:
1.混淆矩阵扩展:
- 在多分类问题中,混淆矩阵扩展为 N×N 矩阵(N 为类别数),每个类别对应一行和一列,分别记录 TP、FP、FN 和 TN 。
2.指标计算:
-
精确率(Precision):对于每个类别,计算 TP/(TP+FP) 。若某个类别的 TP+FP 为零,则该类别的精确率为 0 。
-
召回率(Recall):对于每个类别,计算 TP/(TP+FN) 。若某个类别的 TP+FN 为零,则该类别的召回率为 0 。
-
F1 分数:每个类别的 F1 分数为 2∗
(Precision∗Recall)/(Precision+Recall) 。若 Precision 和 Recall 均为零,则 F1 分数为零。
3.加权计算:
- 使用 weights 参数对每个类别的 Precision、Recall 和 F1 Score 进行加权平均,得到整体的评估结果。
推导过程:
1.构建混淆矩阵:
2.计算每个类别的指标:
3.加权平均计算:
- 使用提供的权重,对每个类别的 Precision、Recall 和 F1 Score 进行加权平均,得到整体评估结果。
输入描述
-
输入数据分为三行,分别对应以下内容:
-
第一行是模型的预测结果 pred,表示每个样本的预测类别,用空格分隔。
-
第二行是真实标签 trueY,表示第一行中每个样本的真实类别,用空格分隔。
-
第三行是每个类别的权重 weights,用空格分隔,第一个数据表示类别 0 的权重,第二个数据表示类别 1 的权重,以此类推。
-
说明:pred 和 trueY 的长度相等;样本类别是从 0 开始的整数 weights 的长度等于样本类别个数;weights 的值为非负数且总和为 1 。
输出描述
-
输出结果为一行,包含三个评估指标,用空格分隔:
-
precision:精确率,计算方式为每个类别的 TP/(TP+FP),并根据权重计算加权平均。
-
recall:召回率,计算方式为每个类别的 TP/(TP+FN),并根据权重计算加权平均。
-
f1Score:F1 分数,每个类别的 F1 分数为精确率和召回率的调和平均,再根据权重计算加权平均。
-
输出结果保留 2 位小数,不足 2 位时补零。
样例1
输入
0 0 0 1 1 2 2 2 2
0 1 2 0 1 2 2 2 2
0.25 0.25 0.5
输出
0.71 0.65 0.67
说明
输入解释:
当前样本的预测类别 pred 为 0 0 0 1 1 2 2 2 2
上述样本的真实类别 trueY 为 0 1 2 0 1 2 2 2 2
类别 0、1、2 的权重 weights 分别为 0.25 0.25 0.5
输出解释:
precision:0.71
recall:0.65
f1Score:0.67
样例2
输入
0 0 1 1
0 0 0 1
0.5 0.5
输出
0.75 0.83 0.73
说明
输入解释:
当前输入样本的预测类别 pred 为 0 0 1 1
当前样本的真实类别 trueY 为 0 0 0 1
类别 0、1 的权重 weights 分别为 0.5 0.5
输出解释:
precision:0.75
recall:0.83
f1Score:0.73