2024-10-16 20:40:37 发布
网友
我正在执行二进制分类,并手动计算宏平均值,例如如下所示:
macro_averaged= (FPR+FNR)*float(0.5)
其中FPR和FNR计算如下:
我得到(0.184484722594 )但是,我得到了不同的结果。。当我使用scikit学习函数时,它是(0.885836909871):
print f1_score(y_test, y_pred, average='binary')
我的案子不应该是一样的吗?在
F1分数的定义(使用类型1,类型2错误)是
当你计算的时候
(注意TN甚至没有出现在f1分数的方程式中)
F1分数的formula是
F1 = 2 * (pr * re) / (pr + re)
精确pr = tp / (fp + tp)和召回{}
pr = tp / (fp + tp)
你计算的macro_averaged是完全不同的。在
macro_averaged
使用以下公式计算每个类的精确度和召回率:
Precison = tp / (fp + tp) Recall = tp / (tp + fn)
然后取其宏观平均值为:
最后用公式计算F1:
F1 = 2 * (AveragePrecision * AverageRecall) / (AveragePrecision + AverageRecall)
F1分数的定义(使用类型1,类型2错误)是
当你计算的时候
(注意TN甚至没有出现在f1分数的方程式中)
F1分数的formula是
精确}
pr = tp / (fp + tp)
和召回{你计算的
macro_averaged
是完全不同的。在使用以下公式计算每个类的精确度和召回率:
然后取其宏观平均值为:
^{pr2}$最后用公式计算F1:
相关问题 更多 >
编程相关推荐