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在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
python中map()与zip()操作方法
Feb 27 Python
python实现手机通讯录搜索功能
Feb 22 Python
py-charm延长试用期限实例
Dec 22 Python
Django框架请求生命周期实现原理
Nov 13 Python
五种Python转义表示法
Nov 27 Python
python 基于UDP协议套接字通信的实现
Jan 22 Python
Python Spyder 调出缩进对齐线的操作
Feb 26 Python
Python数据分析之pandas函数详解
Apr 21 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 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中养成7个面向对象的好习惯
2010/01/28 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
[01:06:26]全国守擂赛第二周 Team Coach vs DeMonsTer
2020/04/28 DOTA
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
英国名牌男装店:Standout
2021/02/17 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
解释下面关于J2EE的名词
2013/11/15 面试题
期末自我鉴定
2014/01/23 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
大学四年个人总结
2015/03/03 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
mysql数据插入覆盖和时间戳的问题及解决
2022/03/25 MySQL