#P4538.第2题-基于混淆矩阵,推导分类模型的核心评估指标
第2题-基于混淆矩阵,推导分类模型的核心评估指标 - problem_ide - CodeFun2000
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()