def auc(y, prob, w):
if len(w) == 0:
mindiff = scipy.amin(scipy.diff(scipy.unique(prob)))
pert = scipy.random.uniform(0, mindiff/3, prob.size)
t, rprob = scipy.unique(prob + pert, return_inverse = True)
n1 = scipy.sum(y, keepdims = True)
n0 = y.shape[0] - n1
u = scipy.sum(rprob[y == 1]) - n1*(n1 + 1)/2
result = u/(n1*n0)
else:
op = scipy.argsort(prob)
y = y[op]
w = w[op]
cw = scipy.cumsum(w)
w1 = w[y == 1]
cw1 = scipy.cumsum(w1)
wauc = scipy.sum(w1*(cw[y == 1] - cw1))
sumw = cw1[-1]
sumw = sumw*(c1[-1] - sumw)
result = wauc/sumw
return(result)
#=========================
评论列表
文章目录