宏观在scikit-learn中取平均值

时间:2016-02-03 11:50:56

标签: python scikit-learn

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

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')

在我的情况下它们不一样吗?

3 个答案:

答案 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)

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

F1 score equation

计算时

enter image description here

(请注意,TN甚至没有出现在f1分数的等式中)