ROC与AUC曲线绘制

由于ROC曲线面积比较难求得,所以判断模型好坏一般使用AUC曲线

关于AUC曲线的绘制,西瓜书上写得比较学术,不太能理解,假设有这么一个样本集:

假设预测样本为20个,预测为正类的概率已经进行了排序,得分递减,画图步骤为:

(1) 在所排序的样本最左边,画一条线即  无 | 1 2 3 4 5 …,线左边的认为是正类,右边认为是负类,可以算出,TP(实际为正,预测为正)=0,FN(实际为正,预测为负)=10,TN(实际为负,预测为负)=10,FP(实际为负,预测为正)=0,故而TPR=0,FPR=0

(2) 在第一个样本后面,画一条线即 1 | 2 3 4 …,线左边的认为是正类,右边认为是负类,可以算出,TP(实际为正,预测为正)=1,FN(实际为正,预测为负)=9,TN(实际为负,预测为负)=10,FP(实际为负,预测为正)=0,故而TPR=0.1,FPR=0

(3) 在第二个样本后面,画一条线即 1 2| 3 4 …,线左边的认为是正类,右边认为是负类,可以算出,TP(实际为正,预测为正)=2,FN(实际为正,预测为负)=8,TN(实际为负,预测为负)=10,FP(实际为负,预测为正)=0,故而TPR=0.2,FPR=0

(4) 在第三个样本后面,画一条线即 1 2 3| 4 5…,线左边的认为是正类,右边认为是负类,可以算出,TP(实际为正,预测为正)=2,FN(实际为正,预测为负)=8,TN(实际为负,预测为负)=10,FP(实际为负,预测为正)=1,故而TPR=0.2,FPR=0.1

... ...

依次例推:起点一定为(0,0),终点一定为(1,1),由此即可画出AUC曲线

但这样做比较繁琐,可以总结规律为:

按照预测为正类的概率值由大到小排序,首先起点一定是(0,0),然后使用上述划线法进行计算,每次碰到一个预测为正的样本,则在Y方向加一个Y步长,否则在X方向加一个X步长,其中X和Y的步长,计算方法为X: 负类样本个数分之1,Y:正类样本个数分之1,如果是降序排列,则是减一个对应方向的步长即可

代码部分:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

def plotROC(predStrengths,classLabels):
    font = FontProperties(fname = r"c:\windows\fonts\simsun.ttc",size=14)
    cur=(1.0,1.0)             #绘制光标位置
    ySum=0.0                  #用于计算AUC
    numPosClas=np.sum(np.array(classLabels)==1.0)  #正类样本的个数
    yStep = 1/float(numPosClas)                    #Y轴步长
    xStep = 1/float(len(classLabels)-numPosClas)   #X轴步长

    sortedIndicies = predStrengths.argsort()
    fig =plt.figure()
    fig().clf()
    ax=plt.figure()
    for inddex in sortedIndicies.tolist()[0]:
        if classLabels[index]==1.0
            delX=0; delY = yStep   #碰到一个正类,Y的步长减 1
        else:
            delX = xStep; delY=0   #碰到一个负类,X的步长减1
            ySum += cur[1]         #每次cur[1]都可能变化了       #高度累加
        ax.plot([cur[0],cur[0]-delX],[cur[1],cur[1]-delY],c = ‘b‘)   #绘制ROC
        cur = (cur[0]-delX,cur[1]-delY)                         #更新绘制光标的位置
    ax.plot([0,1],[0,1],‘b--‘)
    plt.title(‘ROC曲线‘,FontProperties =font)
    plt.xlabel(‘假正例率‘,FontProperties = font)
    plt.ylabel((‘真正例率‘,FontProperties = font))
    ax.axis([0,1,0,1])
    print(‘AUC面积:‘,ySum*xStep)                         #计算AUC
    plt.show()

原文地址:https://www.cnblogs.com/roscangjie/p/11173900.html

时间: 2024-10-15 07:24:33

ROC与AUC曲线绘制的相关文章

ROC,AUC,Precision,Recall,F1的介绍与计算(转)

1. 基本概念 1.1 ROC与AUC ROC曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,ROC曲线称为受试者工作特征曲线 (receiver operating characteristic curve,简称ROC曲线),又称为感受性曲线(sensitivity curve),AUC(Area Under Curve)是ROC曲线下的面积.在计算ROC曲线之前,首先要了解一些基本概念.在二元分类模型的预测结果有四种,以判断人是否有病为例: 真阳性(TP)

ROC和AUC介绍以及如何计算AUC

ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,对两者的简单介绍见这里.这篇博文简单介绍ROC和AUC的特点,以及更为深入地,讨论如何作出ROC曲线图以及计算AUC. ROC曲线 需要提前说明的是,我们这里只讨论二值分类器.对于分类器,或者说分类算法,评价指标主要有precision,recall,F-score1,以及我们今天要讨论的ROC和AUC.下图是一个ROC曲线的示例2. 正

【转】ROC和AUC介绍以及如何计算AUC

转自:https://www.douban.com/note/284051363/ ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,对两者的简单介绍见[这里](http://bubblexc.com/y2011/148/).这篇博文简单介绍ROC和AUC的特点,以及更为深入地,讨论如何作出ROC曲线图以及计算AUC. # ROC曲线需要提前说明的是,我们这里只讨论二值分类器.对于分类器

机器学习:ACC、ROC和AUC

? ? 引言 ? ? 很多时候我们都用到ROC和AUC来评判一个二值分类器的优劣,其实AUC跟ROC息息相关,AUC就是ROC曲线下部分的面积,所以需要首先知道什么是ROC,ROC怎么得来的.然后我们要知道一般分类器会有个准确率ACC,那么既然有了ACC,为什么还要有ROC呢,ACC和ROC的区别又在哪儿,这是我喜欢的一种既生瑜何生亮问题. ? ? 最后又简单说明了一下有了ROC之后,为什么还要有AUC呢 ? ? ROC简介 ? ? ROC曲线的横坐标为false positive rate(F

ROC和AUC介绍以及如何计算AUC ---好!!!!

from:https://www.douban.com/note/284051363/?type=like 原帖发表在我的博客:http://alexkong.net/2013/06/introduction-to-auc-and-roc/ ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,对两者的简单介绍见[这里](http://bubblexc.com/y2011/148/).这篇博

精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么?

作者:竹间智能 Emotibot链接:https://www.zhihu.com/question/30643044/answer/161955532来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 精确率(Precision)是指在所有系统判定的“真”的样本中,确实是真的的占比,就是TP/(TP+FP). 召回率(Recall)是指在所有确实为真的样本中,被判为的“真”的占比,就是TP/(TP+FN). FPR(False Positive Rate),又被称为“

ROC和AUC的区别

ROC是一个曲线,AUC是曲线下面的面积值. ROC曲线是FPR和TPR的点连成的线. 可以从上面的图看到,横轴是FPR, 纵轴是TPR (TPR = TP / (TP + FN):FPR = FP / (FP + TN)) ROC曲线如果想要理解的话,要关注四点一线: 1) (0,1)点:FPR==0,TPR==1 -->代表最好的一种情况,即所有的正例都被正确预测了,并且,没有负例被错认为正例. 2) (1,0)点:--> 代表最差的一种情况,所有的正例都看错了. 3) (0,0)点: -

评估指标:ROC,AUC,Precision、Recall、F1-score

一.ROC,AUC ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣 . ROC曲线一般的横轴是FPR,纵轴是FPR.AUC为曲线下面的面积,作为评估指标,AUC值越大,说明模型越好.如下图: 二.Precision.Recall.F1-score Terminology and derivationsfrom a confusion matrix true positive (TP)

ROC与AUC学习

全文转自:https://www.cnblogs.com/gatherstars/p/6084696.html#commentform 这篇真的讲的清楚明白!要多复习!加深记忆! 1.概述 AUC(Area Under roc Curve)是一种用来度量分类模型好坏的一个标准.这样的标准其实有很多,例如:大约10年前在machine learning文献中一统天下的标准:分类精度:在信息检索(IR)领域中常用的recall和precision,等等.其实,度量反应了人们对"好"的分类结