AUC计算方法与Python实现代码


Posted in Python onFebruary 28, 2020

-AUC计算方法

-AUC的Python实现方式

AUC计算方法

AUC是ROC曲线下的面积,它是机器学习用于二分类模型的评价指标,AUC反应的是模型对样本的排序能力。它的统计意义是从所有正样本随机抽取一个正样本,从所有负样本随机抽取一个负样本,当前score使得正样本排在负样本前面的概率。

AUC的计算主要以下几种方法:

1、计算ROC曲线下的面积。这是比较直接的一种方法,可以近似计算ROC曲线一个个小梯形的面积。几乎不会用这种方法

2、从AUC统计意义去计算。所有的正负样本对中,正样本排在负样本前面占样本对数的比例,即这个概率值。

具体的做法就是它也是首先对prob score从大到小排序,然后令最大prob score对应的sample 的rank为n,第二大score对应sample的rank为n-1,以此类推。

然后把所有的正类样本的rank相加,再减去M-1种两个正样本组合的情况。

得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。

最后再除以M×N。

公式如下:

AUC计算方法与Python实现代码

AUC的Python实现

通过上面方法二的公式,AUC计算的Python实现如下:

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 = 0
  auc = (sum(rankList)- (posNum*(posNum+1))/2)/(posNum*negNum)
  print(auc)
  return auc

其中输入prob是得到的概率值,labels是分类的标签(1,-1)

以上这篇AUC计算方法与Python实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
9种python web 程序的部署方式小结
Jun 30 Python
python写的一个squid访问日志分析的小程序
Sep 17 Python
深入解析Python中的变量和赋值运算符
Oct 12 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
Python字符串逆序的实现方法【一题多解】
Feb 18 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
Python多进程fork()函数详解
Feb 22 Python
Python考拉兹猜想输出序列代码实践
Jul 05 Python
python实现socket+threading处理多连接的方法
Jul 23 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
Python编程快速上手——Excel表格创建乘法表案例分析
Feb 28 #Python
Python计算IV值的示例讲解
Feb 28 #Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 #Python
Python自动采集微信联系人的实现示例
Feb 28 #Python
python代码实现TSNE降维数据可视化教程
Feb 28 #Python
Python range与enumerate函数区别解析
Feb 28 #Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 #Python
You might like
PHP中的Session对象如何使用
2015/09/25 PHP
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
Pandas中resample方法详解
2019/07/02 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
Python 异步协程函数原理及实例详解
2019/11/13 Python
python中列表的含义及用法
2020/05/26 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
用C#语言写出在本地创建一个UDP接收端口的具体过程
2016/02/22 面试题
项目经理任命书范本
2014/06/05 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
后天观后感
2015/06/08 职场文书
记者节感言
2015/08/03 职场文书
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python
MySQL数据库简介与基本操作
2022/05/30 MySQL
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers