python计算召回率_在一次python中计算精度、召回率和Fscore

给定一个二进制分类任务,我尝试了以下方法来获得一个返回准确度、精确度、召回率和f-score的函数:gold = [1] + [0] * 9

predicted = [1] * 10

def evaluation(gold, predicted):

true_pos = sum(1 for p,g in zip(predicted, gold) if p==1 and g==1)

true_neg = sum(1 for p,g in zip(predicted, gold) if p==0 and g==0)

false_pos = sum(1 for p,g in zip(predicted, gold) if p==1 and g==0)

false_neg = sum(1 for p,g in zip(predicted, gold) if p==0 and g==1)

try:

recall = true_pos / float(true_pos + false_neg)

except:

recall = 0

try:

precision = true_pos / float(true_pos + false_pos)

except:

precision = 0

try:

fscore = 2*precision*recall / (precision + recall)

except:

fscore = 0

try:

accuracy = (true_pos + true_neg) / float(len(gold))

except:

accuracy = 0

return accuracy, precision, recall, fscore

但我似乎在数据集中重复循环了4次,以获得真/假阳性/阴性。在

另外,捕捉try-excepts的多个try-excepts有点多余。在

那么在不通过数据集进行多次循环的情况下,用什么样的python方法来获得真/假阳性/阴性计数?

如果没有多次尝试例外,我如何通过pythonic捕捉ZeroDivisionError?

我也可以用下面的方法来计算一个循环中的真/假阳性/阴性,但是有没有一种没有多重if的替代方法?:

^{pr2}$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值