python画roc曲线_使用Python画ROC曲线以及AUC值
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值相关推荐
- 数据挖掘 python roc曲线_利用scikitlearn画ROC曲线实例
一个完整的数据挖掘模型,最后都要进行模型评估,对于二分类来说,AUC,ROC这两个指标用到最多,所以 利用sklearn里面相应的函数进行模块搭建. 具体实现的代码可以参照下面博友的代码,评估svm的 ...
- python画交互式地图_使用Python构建交互式地图-入门指南
python画交互式地图 Welcome to The Beginner's Guide to Building Interactive Maps in Python 欢迎使用Python构建交互式地 ...
- python画猪头_使用Python画小猪佩奇 社会人标配
看了一些用python实现小猪佩奇画画的帖子,向自己实现下,以此记录. 社会人的标配是谁,当然是吹风机小猪佩奇身上纹. 我自己尝试画过小猪配齐但是感觉眼睛特别难画,画出来的猪头没有立体感,眼睛画不好整 ...
- python简单图画程序_用Python的Turtple画图形
不知道各位是否还记得在小学或者初中的时候,我们接触过一种语言叫做logo语言,这个语言可以画正方形,画三角形,画圆.而用Python画图形也有点类似logo语言的意思. 在画图之前,我们需要启动一个模 ...
- python画卡通人物_用Python 绘制儿童卡通人物,一起过儿童节
又到一年一度的国际儿童节,今天我们来学习一下用 Python 的 Turtle 库绘制童年的卡通人物,一起做回年轻的那个少年. Turtle图形库,又称海龟库,是 Python 语言中一个很流行的绘制 ...
- 画验证曲线_数学老师用“函数曲线”绘出美图 学生舍不得擦
数学老师用"函数曲线"绘出美图 太美了!学生舍不得擦黑板 王玮 陈咏 朱老师画的画,釆用了抛物线.双曲线.椭圆.立方抛物线等函数曲线,展示流畅柔和的曲线美. 高中及大学数学,总给人 ...
- python 拟合sigmoid曲线_使用python+sklearn实现概率校准曲线
注意:单击此处https://urlify.cn/muQBjy下载完整的示例代码,或通过Binder在浏览器中运行此示例 在进行分类时,人们经常不仅要预测分类标签,还要预测相关的概率.预测概率可以让人 ...
- python tkinter计算器实例_使用Python自带GUI tkinter编写一个期权价格计算器
0 准备工作 首先,确认环境中有numpy.scipy.stats和tkinter三个功能包.前两个功能包可用于Python的数学计算,比如使用numpy来生成随机数用于Monte Carlo模拟,以 ...
- python 布莱克舒尔斯_使用Python自带GUI tkinter编写一个期权价格计算器
0 准备工作 首先,确认环境中有numpy.scipy.stats和tkinter三个功能包.前两个功能包可用于Python的数学计算,比如使用numpy来生成随机数用于Monte Carlo模拟,以 ...
- python给矩阵赋值_解决Python二维数组赋值问题
解决Python二维数组赋值问题 当我们采用s=[[0]*3]*2初始化一个数组,然后对s[0][0]进行赋值,改变的是第一列所有的值.因为用s = [[0]*3]*2 初始化数组,他表示的是指向这个 ...
最新文章
- 如何导入别人的android studio项目,解决gradle版本不兼容问题
- 所谓的inference场景与深度学习终端加速器以及边缘计算和雾计算
- CDN加速实现—varnish
- Python: subprocess.Popen()不支持unicode问题解决
- linux内核定时器使用及原理
- Atitit java rest mvc微服务原理以及框架选型 目录 第一节 Mvc原理 model controler view	1 第二章 Spark 最简单	1 第一节 Sprbt to
- 英克软件结合oracle,英克医药第三方物流管理软件
- python编写agent_python 自动生成useragent/User-Agent方法全解析
- IPv4编址;A类、B类、C类、D类、E类IP地址(IP地址;网络地址和主机地址;子网掩码;网关;广播地址;)
- MAC big sur桌面图片在哪个文件夹
- ST板块大幅下跌 不少ST股逆势上涨
- 小学教资——教育教学口诀
- 格创东智品牌形象升级,新Logo尽显创新活力
- c51倒计时程序汇编语言,两位倒计时器程序(单片机—汇编语言).doc
- android手机分辨率适配,Android屏幕适配(一)
- javac编译程序,出现‘javac’不是内部或外部命令,也不是可运行的程序或批处理文件。
- Edge浏览器安装油猴插件以及好用的插件推荐
- 解析单总线协议(1-wire)
- Linux Let's Encrypt生成免费证书
- Java实现Shamir秘密共享带注释
热门文章
- 【转】.so兼容32位和64位
- 中国股市暴涨暴跌全记录
- 阵列卡正确安装调试方法
- 计算机技术在农机上的应用,计算机视觉技术在农机自动化上的应用与优势分析.pdf...
- js 浅拷贝直接赋值_JS中的赋值、浅拷贝与深拷贝
- 域控制器服务器的管理维护,域控制器管理 向备份要安全(图)
- 普通大学毕业后干啥_一名女孩从大学毕业后在机械行业干了十年,背后经历让人辛酸……...
- 信息学奥赛一本通 1319:【例6.1】排队接水 | 洛谷 P1223 排队接水
- 信息学奥赛一本通 1911:【00NOIP普及组】税收与补贴问题 | 洛谷 P1023 [NOIP2000 普及组] 税收与补贴问题
- 线性代数 —— 矩阵与矩阵运算