AUC介绍

AUC (Area Under Curve)是机器学习二分类模型中非常常用的评估指标,相比于 F1-Score 对项目的不平衡有更大的容忍性,目前常见的机器学习库中(比如 scikit-learn)一般也都是集成该指标的计算,但是有时候模型是单独的或者自己编写的,此时想要评估训练模型的好坏就得自己搞一个 AUC 计算模块,本文在查询资料时发现 libsvm-tools 1 有一个非常通俗易懂的 auc 计算,因此抠出来用作日后之用。

AUC计算

AUC 的计算分为下面三个步骤:计算数据的准备,如果模型训练时只有训练集的话一般使用交叉验证的方式来计算,如果有评估集( evaluate )一般就可以直接计算了,数据的格式一般就是需要预测得分以及其目标类别(注意是目标类别,不是预测得到的类别)

根据阈值划分得到横(X: False Positive Rate )以及纵(Y: True Positive Rate )点

将坐标点连成曲线之后计算其曲线下面积,就是 AUC 的值

直接上python代码#! -*- coding=utf-8 -*-import pylab as pl

from math import log,exp,sqrtevaluate_result="you file path"db = [] #[score,nonclk,clk]pos, neg = 0, 0 with open(evaluate_result,'r') as fs:for line in fs:

nonclk,clk,score = line.strip().split('\t')

nonclk = int(nonclk)

clk = int(clk)

score = float(score)

db.append([score,nonclk,clk])pos += clk

neg += nonclk

db = sorted(db, key=lambda x:x[0], reverse=True)#计算ROC坐标点xy_arr = []

tp, fp = 0., 0.

for i in range(len(db)):

tp += db[i][2]

fp += db[i][1]

xy_arr.append([fp/neg,tp/pos])#计算曲线下面积auc = 0.

prev_x = 0for x,y in xy_arr:if x != prev_x:

auc += (x - prev_x) * yprev_x = xprint "the auc is %s."%aucx = [_v[0] for _v in xy_arr]y = [_v[1] for _v in xy_arr]

pl.title("ROC curve of %s (AUC = %.4f)" % ('svm',auc))

pl.xlabel("False Positive Rate")

pl.ylabel("True Positive Rate")

pl.plot(x, y)# use pylab to plot x and ypl.show()# show the plot on the screen

输入的数据集可以参考svm预测结果

其格式为:nonclk \t clk \t score

其中:nonclick :未点击的数据,可以看做负样本的数量

clk :点击的数量,可以看做正样本的数量

score :预测的分数,以该分数为group进行正负样本的预统计可以减少 AUC 的计算量

运行的结果为:

如果本机没安装 pylab 可以直接注释依赖以及画图部分

注意

上面贴的代码:只能计算二分类的结果(至于二分类的标签随便处理)

上面代码中每个 score 都做了一次阈值,其实这样效率是相当低的,可以对样本进行采样或者在计算横轴坐标时进行等分计算

python画roc曲线_使用Python画ROC曲线以及AUC值相关推荐

  1. 数据挖掘 python roc曲线_利用scikitlearn画ROC曲线实例

    一个完整的数据挖掘模型,最后都要进行模型评估,对于二分类来说,AUC,ROC这两个指标用到最多,所以 利用sklearn里面相应的函数进行模块搭建. 具体实现的代码可以参照下面博友的代码,评估svm的 ...

  2. python画交互式地图_使用Python构建交互式地图-入门指南

    python画交互式地图 Welcome to The Beginner's Guide to Building Interactive Maps in Python 欢迎使用Python构建交互式地 ...

  3. python画猪头_使用Python画小猪佩奇 社会人标配

    看了一些用python实现小猪佩奇画画的帖子,向自己实现下,以此记录. 社会人的标配是谁,当然是吹风机小猪佩奇身上纹. 我自己尝试画过小猪配齐但是感觉眼睛特别难画,画出来的猪头没有立体感,眼睛画不好整 ...

  4. python简单图画程序_用Python的Turtple画图形

    不知道各位是否还记得在小学或者初中的时候,我们接触过一种语言叫做logo语言,这个语言可以画正方形,画三角形,画圆.而用Python画图形也有点类似logo语言的意思. 在画图之前,我们需要启动一个模 ...

  5. python画卡通人物_用Python 绘制儿童卡通人物,一起过儿童节

    又到一年一度的国际儿童节,今天我们来学习一下用 Python 的 Turtle 库绘制童年的卡通人物,一起做回年轻的那个少年. Turtle图形库,又称海龟库,是 Python 语言中一个很流行的绘制 ...

  6. 画验证曲线_数学老师用“函数曲线”绘出美图 学生舍不得擦

    数学老师用"函数曲线"绘出美图 太美了!学生舍不得擦黑板 王玮 陈咏 朱老师画的画,釆用了抛物线.双曲线.椭圆.立方抛物线等函数曲线,展示流畅柔和的曲线美. 高中及大学数学,总给人 ...

  7. python 拟合sigmoid曲线_使用python+sklearn实现概率校准曲线

    注意:单击此处https://urlify.cn/muQBjy下载完整的示例代码,或通过Binder在浏览器中运行此示例 在进行分类时,人们经常不仅要预测分类标签,还要预测相关的概率.预测概率可以让人 ...

  8. python tkinter计算器实例_使用Python自带GUI tkinter编写一个期权价格计算器

    0 准备工作 首先,确认环境中有numpy.scipy.stats和tkinter三个功能包.前两个功能包可用于Python的数学计算,比如使用numpy来生成随机数用于Monte Carlo模拟,以 ...

  9. python 布莱克舒尔斯_使用Python自带GUI tkinter编写一个期权价格计算器

    0 准备工作 首先,确认环境中有numpy.scipy.stats和tkinter三个功能包.前两个功能包可用于Python的数学计算,比如使用numpy来生成随机数用于Monte Carlo模拟,以 ...

  10. python给矩阵赋值_解决Python二维数组赋值问题

    解决Python二维数组赋值问题 当我们采用s=[[0]*3]*2初始化一个数组,然后对s[0][0]进行赋值,改变的是第一列所有的值.因为用s = [[0]*3]*2 初始化数组,他表示的是指向这个 ...

最新文章

  1. 如何导入别人的android studio项目,解决gradle版本不兼容问题
  2. 所谓的inference场景与深度学习终端加速器以及边缘计算和雾计算
  3. CDN加速实现—varnish
  4. Python: subprocess.Popen()不支持unicode问题解决
  5. linux内核定时器使用及原理
  6. Atitit java rest mvc微服务原理以及框架选型 目录 第一节 Mvc原理 model controler view 1 第二章 Spark 最简单 1 第一节 Sprbt to
  7. 英克软件结合oracle,英克医药第三方物流管理软件
  8. python编写agent_python 自动生成useragent/User-Agent方法全解析
  9. IPv4编址;A类、B类、C类、D类、E类IP地址(IP地址;网络地址和主机地址;子网掩码;网关;广播地址;)
  10. MAC big sur桌面图片在哪个文件夹
  11. ST板块大幅下跌 不少ST股逆势上涨
  12. 小学教资——教育教学口诀
  13. 格创东智品牌形象升级,新Logo尽显创新活力
  14. c51倒计时程序汇编语言,两位倒计时器程序(单片机—汇编语言).doc
  15. android手机分辨率适配,Android屏幕适配(一)
  16. javac编译程序,出现‘javac’不是内部或外部命令,也不是可运行的程序或批处理文件。
  17. Edge浏览器安装油猴插件以及好用的插件推荐
  18. 解析单总线协议(1-wire)
  19. Linux Let's Encrypt生成免费证书
  20. Java实现Shamir秘密共享带注释

热门文章

  1. 【转】.so兼容32位和64位
  2. 中国股市暴涨暴跌全记录
  3. 阵列卡正确安装调试方法
  4. 计算机技术在农机上的应用,计算机视觉技术在农机自动化上的应用与优势分析.pdf...
  5. js 浅拷贝直接赋值_JS中的赋值、浅拷贝与深拷贝
  6. 域控制器服务器的管理维护,域控制器管理 向备份要安全(图)
  7. 普通大学毕业后干啥_一名女孩从大学毕业后在机械行业干了十年,背后经历让人辛酸……...
  8. 信息学奥赛一本通 1319:【例6.1】排队接水 | 洛谷 P1223 排队接水
  9. 信息学奥赛一本通 1911:【00NOIP普及组】税收与补贴问题 | 洛谷 P1023 [NOIP2000 普及组] 税收与补贴问题
  10. 线性代数 —— 矩阵与矩阵运算