我正在执行二进制分类,我手动计算宏的平均值,例如如下所示:
macro_averaged= (FPR+FNR)*float(0.5)
其中FPR和FNR的计算方法如下:
FPR= FP/float(FP+TN)
FNR= FN/float(FN+TP)
我正在接受(0.184484722594 )但是,当我使用scikit-learn函数时,我得到了不同的结果..(0.885836909871):
print f1_score(y_test, y_pred, average='binary')
在我的情况下它们不一样吗?
答案 0 :(得分:2)
使用以下公式计算每个类的精确度和召回率:
load
然后将他们的宏观平均值设为:
Precison = tp / (fp + tp)
Recall = tp / (tp + fn)
然后最终使用F1的公式:
AveragePrecision = (Precison_classA + Precission_classB)/ 2
AverageRecall = (Recall_classA + Recall_classB)/ 2
答案 1 :(得分:1)
F1得分的formula是
F1 = 2 * (pr * re) / (pr + re)
精确pr = tp / (fp + tp)
并回忆re = tp / (tp + fn)
你计算的macro_averaged
是完全不同的东西。
答案 2 :(得分:1)