糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > python计算auc值_Python计算AUC

python计算auc值_Python计算AUC

时间:2019-11-05 13:46:21

相关推荐

python计算auc值_Python计算AUC

AUC(Area under curve)是机器学习常用的二分类评测手段,直接含义是ROC曲线下的面积。另一种解释是:随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进行预测,预测得到正样本的概率大于负样本概率的概率。 在有M个正样本,N个负样本的数据集里,利用公式求解: $$ AUC=\frac{\sum_{i \in positiveClass} rank_i-\frac{M(1+M)}{2}}{MN} $$ 在python实现中,相当于使用了计数排序,因为概率是一个小数,我们同时乘以100取整数进行排序(也可以根据精度调整)。在排完序后,我们就可以得到正样本概率大于负样本概率的个数,再加上正样本概率等于负样本概率的个数的一半,除以总共的样本数(MN),即可得到最终的AUC值。

def AUC(labels,preds,n_bins=100):

m = sum(labels)

n = len(labels) - m

total_case = m * n

pos = [0 for _ in range(n_bins)]

neg = [0 for _ in range(n_bins)]

bin_width = 1.0 / n_bins

for i in range(len(labels)):

nth_bin = int(preds[i]/bin_width)

if labels[i]==1:

pos[nth_bin] += 1

else:

neg[nth_bin] += 1

accumulated_neg = 0

satisfied_pair = 0

for i in range(n_bins):

satisfied_pair += (pos[i]*accumulated_neg + pos[i]*neg[i]*0.5)

accumulated_neg += neg[i]

return satisfied_pair / total_case

y = [1,0,0,0,1,0,1,0,]

pred = [0.9, 0.8, 0.3, 0.1,0.4,0.9,0.6,0.7]

print(AUC(y, pred, n_bins=100))

作为机器学习中的经典评价准则,AUC的计算也作为面试笔试常考的算法题。

如果觉得《python计算auc值_Python计算AUC》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。