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中的join()函数的用法
Apr 07 Python
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
python中异常捕获方法详解
Mar 03 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
详解Django之admin组件的使用和源码剖析
May 04 Python
ubuntu17.4下为python和python3装上pip的方法
Jun 12 Python
python替换字符串中的子串图文步骤
Jun 19 Python
Django使用Jinja2模板引擎的示例代码
Aug 09 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
深入探讨opencv图像矫正算法实战
May 21 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
基于PHPExcel的常用方法总结
2013/06/13 PHP
详解json在php中的应用
2018/09/30 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
jquery 可排列的表实现代码
2009/11/13 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
2016/11/25 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
django fernet fields字段加密实践详解
2019/08/12 Python
python中调试或排错的五种方法示例
2019/09/12 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
python mock测试的示例
2020/10/19 Python
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
linux面试题参考答案(10)
2013/11/04 面试题
银行实习生自我鉴定范文
2013/09/19 职场文书
毕业生就业意向书
2014/04/01 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
民事授权委托书范文
2014/08/02 职场文书
会计试用期自我评价
2014/09/19 职场文书
离婚协议书怎么写
2015/01/26 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript