我正在尝试用Python实现F1评分在这里显示。
我的函数的输入是预测列表和实际正确值的列表。我认为,计算真正、假负数和假阳性数的最有效方法是将这两组列表转换成两组,然后用集交集和差来找出兴趣的数量。这是我的密码
def F1_score(tags,predicted):
tags=set(tags)
predicted=set(predicted)
tp=len(tags.intersection(predicted))
fp=len(predicted.difference(tags))
fn=len(tags.difference(predicted))
if tp>0:
precision=float(tp)/(tp+fp)
recall=float(tp)/(tp+fn)
return 2*((precision*recall)/(precision+recall))
else:
return 0发布于 2013-11-26 09:44:35
若要计算集合差的长度,只需从集合的长度减去交集的长度。在计算差异时,您可以使用这个交集。减去交集可以得到相同的结果,但处理的元素较少。
tags = set(tags)
predicted = set(predicted)
tp = len(tags & predicted)
fp = len(predicted) - tp
fn = len(tags) - tp注意,为了提高可读性,我在操作符周围添加了空格。作为首选,我还使用了&运算符而不是intersection方法。
https://codereview.stackexchange.com/questions/36096
复制相似问题