题解 | 多分类加权指标计算
多分类加权指标计算
https://www.nowcoder.com/practice/dec560ebcd8c47c9a37f6df692c38d25
def read(type):
return list(map(type,input().split()))
pred=read(int)
gt=read(int)
ws=read(float)
# tp, fp, fn
cs=[[0]*3 for _ in ws]
for p,g in zip(pred,gt):
if p==g:
cs[p][0]+=1
else:
cs[p][1]+=1
cs[g][2]+=1
ms=[]
for tp,fp,fn in cs:
p=tp/(tp+fp) if tp+fp!=0 else 0
r=tp/(tp+fn) if tp+fn!=0 else 0
f=2*p*r/(p+r) if p+r!=0 else 0
ms.append((p,r,f))
resp,resr,resf=0,0,0
for (ps,rs,fs),w in zip(ms,ws):
resp+=w*ps
resr+=w*rs
resf+=w*fs
print(f"{resp:.2f} {resr:.2f} {resf:.2f}")

查看20道真题和解析