题目是计算auc
结合查到的资料写的代码,很多地方我也不理解含义
虽然在平台AC了
但在python运行没有输出auc
不知道什么缘故
import numpy as np
def calAUC(prob, labels):
'''
计算AUC并返回
:param prob: 模型预测样本为Positive的概率列表,类型为ndarray
:param labels: 样本的真实类别列表,其中1表示Positive,0表示Negtive,类型为ndarray
:return: AUC,类型为float
'''
#********* Begin *********#
def M(labels):
return np.sum(labels==1)
def N(prob):
return np.sum(labels==0)
f = list(zip(prob,labels))//list函数:形成列表。zip函数:压缩两个列表为一个。
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] //???如果rank[i]==1则i+1 ???
auc = 0
auc = (sum(rankList) - (M(labels)*(M(labels)+1))/2)/(M(labels)*N(labels))
return auc
#********* End *********#