python roc_auc_score,画roc曲线 python
00-1010 ROC(受试者操作特征)曲线和AUC通常用于评估二元分类器。本文将首先简单介绍ROC和AUC,然后举例演示如何用python制作ROC曲线和计算AUC。
00-1010 AUC(曲线下面积)是机器学习两类模型中非常常用的评价指标,对项目不平衡的容忍度比F1-Score更大。目前常见的机器学习数据库(如scikit-learn)一般都会集成这个指标的计算,但有时模型会单独编写或自己编写。这个时候,如果你想评价训练模型的好坏,你就得自己搭建一个auc计算模块。在本文中,我们发现libsvm-tools有一个非常容易理解的AUC计算,所以我们把它挖掘出来以备将来使用。
前言
AUC的计算分为以下三个步骤:
1.计算数据的准备。如果模型训练时只有一个训练集,一般用交叉验证来计算。如果有评估集,可以直接计算。数据格式一般是需要的预测分数及其目标类别(注意是目标类别,不是预测类别)。
2.根据阈值,获得水平(x :假阳性率)和垂直(y :真阳性率)点
3.将坐标点连成曲线后,计算曲线下的面积,就是AUC的值。
AUC介绍
#!-*-coding=utf-8-*-将pylab作为pl导入
从数学导入日志,exp,sqrt
evaluate _ result= you file path db=[]#[score,nonclk,clk]pos,neg=0,0
对于fs:中的行,open(evaluate_result, r )为fs:
nonclk,clk,score=line.strip()。拆分( t )
nonclk=int(nonclk)
clk=int(clk)
分数=浮点(分数)
db.append([score,nonclk,clk])
pos=clk
neg=非时钟
db=已排序(db,key=lambda x:x[0],reverse=True)
#计算ROC坐标点XY _ ARR=[] TP,FP=0.0。
对于范围内的I(len(db)):
tp=db[i][2]
fp=db[i][1]
xy_arr.append([fp/neg,tp/pos])
#计算曲线下的面积auc=0。
如果x,则xy_arr:中的x,y的prev _ x=!=prev_x:
auc=(x - prev_x) * y
prev_x=x
print AUC是%s,%auc
x=[_v[0] for _v in xy_arr]
y=[_v[1] for _v in xy_arr]
pl.title(的ROC曲线%s (AUC=%.4f) % (svm ,AUC))
pl.xlabel(假阳性率)
pl.ylabel(“真实阳性率”)
pl.plot(x,y)#使用pylab绘制x和y
地方show () #以:的格式在屏幕上显示图形
非时钟分数,其中:
1.nonclick:的无上限数据可视为负样本数。
2.clk:的点击次数可以视为正样本数。
3.score:预测的分数。以此分数为一组对阳性和阴性样本进行预统计,可以减少AUC的计算量。
的运行结果是:
如果本机没有安装pylab,可以直接标注依赖关系,画一些注意.
上面贴的代码是:
1.只能计算第二分类的结果(至于第二分类的标签,随便处理)。
2.在上面的代码中,每个分数都有一个阈值。其实这个效率是比较低的。可以对样本进行采样,也可以相等地计算横轴坐标。
非常感谢您的阅读。
大学的时候,我选择自学python。工作后发现自己苦于计算机基础不好,学历也不好。除了后天弥补之外,我别无选择。于是,我在编码之外开始了自己的逆袭之路,不断学习python的核心知识,深入学习计算机的基础知识,并进行整理。我放在我们的微信微信官方账号《程序员学府》。如果你不甘平庸,请加入编码之外的我,不断成长!
其实这里不仅有技术,还有那些技术之外的东西。比如如何做一个精致的程序员而不是“屌丝”?程序员本身就是高尚的存在,不是吗?【点击加入】想做自己,做一个高尚的人,来吧!
感谢您的阅读,希望您能从中获益良多。
本文转自:https://blog.csdn.net/adrrry/article/details/106796288
推荐教程:以上《python教程》是Python中绘制ROC曲线和AUC值计算(附代码)的详细内容。其他相关文章请多关注盛行的IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。