人脸认证-ROC曲线绘制计算AUC和ACC

来源:互联网 发布:淘宝销量可以刷吗 编辑:程序博客网 时间:2024/06/04 19:35
import numpy as npimport matplotlibmatplotlib.use('Agg')import matplotlib.pyplot as pltfrom sklearn.metrics import roc_auc_scorescores = []with open("result.txt") as f:    lines = f.readlines()    for line in lines:    line = line.strip("/r/n")    line = line.replace("[[","")    line = line.replace("]]","")    score = float(line)    scores.append(score)y = []for i in range(6000):    if i<3000: #N        y.append(0)    else:        y.append(1)roc_x = []roc_y = []min_score = min(scores)max_score = max(scores)thr = np.linspace(min_score, max_score, 100)FP = 0TP = 0TN = 0N = 3000P = 3000acc_list = []for(i, T) in enumerate(thr):    for i in range(0, len(scores)):    if(scores[i] > T):        if(y[i] == 1):            TP = TP + 1        if(y[i] == 0):            FP = FP + 1    else:        if(y[i] == 0)            TN = TN + 1    roc_x.append(FP/float(N))    roc_y.append(TP/float(P))    acc= (TP + TN)*1.0/(N+P)    acc_list.append(acc)    FP = 0    TP =0    TN = 0plt.plot(roc_x, roc_y, '--*b')plt.savefig("roc.png")auc = roc_auc_score(y, scores)print "AUC:", aucprint "ACC:", max(acc_list)
原创粉丝点击