根据定义计算AUC (python实现)
auc值的大小可以理解为: 随机抽一个正样本和一个负样本,正样本预测值比负样本大的概率。
def calcAUC_byProb(labels, probs):
N = 0
P = 0
neg_prob = [] # 负样本概率
pos_prob = [] # 正样本概率
for _,i in enumerate(labels):
if (i == 1):
P += 1
pos_prob.append(probs[_])
else:
N += 1
neg_prob.append(probs[_])
number = 0
for pos in pos_prob:
for neg in neg_prob:
if (pos > neg):
number += 1 # 如果预测的正样本概率大,就加1
elif (pos == neg):
number += 0.5 # 如果预测的概率相等,就加0.5
return number / (N * P)