def f1_score(confusion):
tps = np.diagonal(confusion)
supports = confusion.sum(axis=1)
# TODO remove this ignore divide by 0, shouldn't happen
with np.errstate(divide='ignore', invalid='ignore'):
precisions = np.true_divide(tps, confusion.sum(axis=0))
recalls = np.true_divide(tps, supports)
f1s = 2*np.true_divide((precisions*recalls),(precisions+recalls))
f1s[f1s == np.inf] = 0
f1s = np.nan_to_num(f1s)
f1 = np.average(f1s, weights=supports)
return f1
# TODO remove duplicated code, same as intent model utils
评论列表
文章目录