ROC-AUC 曲线以及PRC曲线


目录:
机器学习常见面试问题汇总
问题汇总(1):逻辑回归
问题汇总(2):支持向量机
问题汇总(3):树模型
问题汇总(4):聚类
问题汇总(5):神经网络
问题汇总(6):EM算法
问题汇总(7):朴素贝叶斯


分类模型评估之ROC-AUC曲线和PRC曲线

附auc计算的手动实现:
输入:

10
1 0.90
0 0.70
1 0.60
1 0.55
0 0.52
1 0.40
0 0.38
0 0.35
1 0.31
0 0.10

输出:0.68

import sys
N = int(sys.stdin.readline())
data = []
label = []
for _ in range(N):
    a,b = map(float,sys.stdin.readline().strip().split())
    data.append(b)
    label.append(int(a))

def calAUC(prob,labels):
    f = list(zip(prob,labels))
    rank = [values2 for values1,values2 in sorted(f,key=lambda x:x[0])]
    rankList = [i+1 for i in range(len(rank)) if rank[i]==1]
    posNum = 0
    negNum = 0
    for i in range(len(labels)):
        if(labels[i]==1):
            posNum+=1
        else:
            negNum+=1
    auc = (sum(rankList)- (posNum*(posNum+1))/2)/(posNum*negNum)
    return auc

ans = calAUC(data,label)
print(ans)

你可能感兴趣的:(ROC-AUC 曲线以及PRC曲线)