我试图为这组数据计算f(0.5)和f(2):
Precision: 0.6
Recall: 0.45
我的结果:
f(1) : 0.51
f(0.5): 0.56 (wrong)
f(2) : 0.47 (wrong)
我使用这个公式计算了f(1)测量值
(2x(PxR))/(P+R)
但是当我尝试计算f(2)或f(0.5)时,我的结果略有偏差
f(0.5) should be 0.54
f(2) should be 0.49
我使用了以下公式:
(b^2 + 1) x ((P x R)/(b^2)+R)
b =我使用的f度量,0.5或2
我做错了什么? 如果可能的话,有人可以为我计算f(0.5)和f(2)度量并确认我错了吗?
任何帮助表示赞赏,我会尽力使这个问题尽可能清楚。如果评论不够清楚,请发表评论,我会尝试添加评论
由于
答案 0 :(得分:3)
正确的等式(在维基百科页面上它有真正的数学格式,更容易阅读)是:
F(β)=(1+β2)⋅(PR/(β2P+R))
或者在Python中:
>>> def F(beta, precision, recall):
... return (beta*beta + 1)*precision*recall / (beta*beta*precision + recall)
...
>>> F(1, .6, .45)
0.5142857142857143
>>> F(2, .6, .45)
0.4736842105263158
>>> F(0.5, .6, .45)
0.5625000000000001
这看起来非常接近您所获得的值,并且与您所说的“正确”的值非常相似。所以似乎值得问一下“所谓的正确值来自何处?”