第2题-基于混淆矩阵,推导分类模型的核心评估指标 - problem_ide - CodeFun2000
python
import sys
import numpy as np
def solve():
pred = list(map(int,input().split()))
trueY = list(map(int,input().split()))
weights = list(map(float,input().split()))
n = len(weights)
m = len(pred)
#print(n)
#print(m)
precision = [0 for _ in range(n)]
recall = [0 for _ in range(n)]
f1 = [0 for _ in range(n)]
for i in range(n):
TP = 0
FP = 0
FN = 0
for j in range(m):
if(trueY[j]==i or pred[j]==i):
if(pred[j] == trueY[j]):
TP +=1
elif(pred[j]==i and trueY[j]!=i):
FP+=1
elif(pred[j]!=i and trueY[j]==i):
FN+=1
if((TP+FP)!=0):
precision[i] = TP/(TP+FP)
else:
precision[i] = 0
if((TP+FN)!=0):
recall[i] = TP/(TP+FN)
else:
recall[i] = 0
if((precision[i]!=0) and (recall[i]!=0)):
f1[i] = 2*precision[i]*recall[i]/(precision[i]+recall[i])
else:
f1[i] = 0
precision = np.array(precision)
recall = np.array(recall)
f1 = np.array(f1)
#print(precision)
#print(recall)
#print(f1)
precision_avg = np.sum(precision*weights)
recall_avg = np.sum(recall*weights)
f1_avg = np.sum(f1*weights)
print(f"{precision_avg:.2f} {recall_avg:.2f} {f1_avg:.2f}",end='')
if __name__ =='__main__':
solve()