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 相关文章推荐
将Python中的数据存储到系统本地的简单方法
Apr 11 Python
Python版微信红包分配算法
May 04 Python
Python批量创建迅雷任务及创建多个文件
Feb 13 Python
Python微信公众号开发平台
Jan 25 Python
Python实现简单的用户交互方法详解
Sep 25 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
python解析xml简单示例
Jun 21 Python
基于Python执行dos命令并获取输出的结果
Dec 30 Python
TensorFlow2.1.0最新版本安装详细教程
Apr 08 Python
Python filter过滤器原理及实例应用
Aug 18 Python
Python+unittest+requests 接口自动化测试框架搭建教程
Oct 09 Python
python实现简单反弹球游戏
Apr 12 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中include()与require()的区别说明
2010/03/10 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
python实现对csv文件的列的内容读取
2018/07/04 Python
浅谈python常用程序算法
2019/03/22 Python
python,Django实现的淘宝客登录功能示例
2019/06/12 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
Python实现微信机器人的方法
2019/09/06 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
某科技软件测试面试题
2013/05/19 面试题
《童年的发现》教学反思
2014/02/14 职场文书
个人授权委托书范文
2014/09/21 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
校运会新闻稿
2015/07/17 职场文书
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL