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和shell变量互相传递的几种方法
Nov 20 Python
插入排序_Python与PHP的实现版(推荐)
May 11 Python
Python学习小技巧之列表项的拼接
May 20 Python
基于python(urlparse)模板的使用方法总结
Oct 13 Python
详解python中eval函数的作用
Oct 22 Python
在django中自定义字段Field详解
Dec 03 Python
使用pytorch 筛选出一定范围的值
Jun 28 Python
pycharm导入源码的具体步骤
Aug 04 Python
Python变量及数据类型用法原理汇总
Aug 06 Python
如何基于Django实现上下文章跳转
Sep 16 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
Dec 01 Python
PyQt5 QThread倒计时功能的实现代码
Apr 02 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 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
php可变长参数处理函数详解
2017/02/22 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
浅谈Vue 初始化性能优化
2017/08/31 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
python单例设计模式实现解析
2020/01/07 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
python中random模块详解
2021/03/01 Python
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
中专毕业生的自荐书
2014/07/01 职场文书
建筑管理专业求职信
2014/07/28 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
地道战观后感400字
2015/06/04 职场文书
催款函范本大全
2015/06/24 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python
如何用PHP实现多线程编程
2021/05/26 PHP
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang