我目前正在处理ML分类问题,并且正在使用sklearn
库的以下导入和相应代码来计算Precision,Recall和F1,如下所示。
from sklearn.metrics import precision_recall_fscore_support
print(precision_recall_fscore_support(y_test, prob_pos, average='weighted'))
结果
0.8806451612903226, 0.8806451612903226, 0.8806451612903226
是否有可能针对ML分类问题的所有3个参数(精度,召回率和F1)获得相同的值?
在这方面的任何澄清将不胜感激。
答案 0 :(得分:3)
是的,这是可能的。假设使用
进行二进制分类
对Pr = Re = F1
的简单解决方案是TP = 0
。因此,我们知道精度,召回率和F1通常可以具有相同的值。现在,这不适用于您的特定结果。如果我们求解方程组,则会找到另一个解决方案:FP = FN
。因此,如果误报的数量与误报的数量相同,则所有三个指标的值都相同。
对于多类分类问题,我们有
如果Pr = Re
,则所有三个指标都相同。
答案 1 :(得分:0)
这似乎是由于选项-average ='weighted'
“加权”: 计算每个标签的指标,并找到其平均支持权重(每个标签的真实实例数)。这会更改“宏”以解决标签不平衡的问题;可能会导致F得分不在精确度和召回率之间。