scikitlearn中的宏平均值

2024-10-16 20:40:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在执行二进制分类,并手动计算宏平均值,例如如下所示:

macro_averaged= (FPR+FNR)*float(0.5)

其中FPR和FNR计算如下:

^{pr2}$

我得到(0.184484722594 )但是,我得到了不同的结果。。当我使用scikit学习函数时,它是(0.885836909871):

print f1_score(y_test, y_pred, average='binary')

我的案子不应该是一样的吗?在


Tags: 函数二进制分类手动scikitfloatf1平均值
3条回答

F1分数的定义(使用类型1,类型2错误)是

F1 score equation

当你计算的时候

enter image description here

(注意TN甚至没有出现在f1分数的方程式中)

F1分数的formula

F1 = 2 * (pr * re) / (pr + re)

精确pr = tp / (fp + tp)和召回{}

你计算的macro_averaged是完全不同的。在

使用以下公式计算每个类的精确度和召回率:

Precison = tp / (fp + tp)
Recall = tp / (tp + fn)

然后取其宏观平均值为:

^{pr2}$

最后用公式计算F1:

F1 = 2 * (AveragePrecision * AverageRecall) / (AveragePrecision + AverageRecall)

相关问题 更多 >