PR曲线和ROC曲线概念及其区别

PR曲线和ROC曲线概念及其区别将测试样本的预测结果按照置信度排序,由高到低,卡个阈值作为正负样本的判定依据,阈值较高时,Precision比较大,阈值较低时,Recall较大。(推荐的话,想Precision较大,用户希望排名靠前的推荐是自己想要的,刑侦的话希望Recall较大,不错过一个犯人)知识点Precision=TP/(TP+FP)Recall=TP/(总的正样本)=TP/(TP+FN)#这个时候的TP…

大家好,又见面了,我是你们的朋友全栈君。

知识点

Precision=TP/(TP+FP)
Recall=TP/(总的正样本)=TP/(TP+FN) # 这个时候的
TPR=TP/(TP+FN)=Recall # 真正例率
FPR=FP/(TN+FP) #
PR曲线
横Recall,纵Precision
PR曲线的绘制
场景:有限样本。
方法:固定分类阈值(比如0.5),对分类器的预测结果按照置信度进行降序排序,然后按此顺序对样例进行预测,每次可以计算出当前的查全率(Recall)和查准率(Precision),然后以此作图,绘制出P-R曲线。(疑惑??:P-R曲线是按照固定的分类阈值,还是按照西瓜书所讲,按照置信度降序的顺序,逐个把样本作为正例进行预测??我做商汤的笔试题,是采取固定分类阈值的策略)
ROC曲线 横FPR,纵TPR,理想的情况是TPR=1,FPR=0,一般来说,FPR增大,则TPR也会跟着增大。
ROC曲线的绘制:
场景:有限样本。
方法:卡阈值,对学习器的预测结果排序,排在前面的是最可能为正例的样本,最后的是最不可能的样本,然后计算不同阈值下的TPR和FPR值,绘制出曲线。
卡阈值作为正负样本的判定依据,阈值较高时,Precision比较大,阈值较低时,Recall较大。(推荐的话,想Precision较大,用户希望排名靠前的推荐是自己想要的,刑侦的话希望Recall较大,不错过一个犯人)
AUC:ROC曲线下面积。
PR和ROC曲线应用范围:
1.当正负样本比例差不多的时候,两者区别不大。
2.PR曲线比ROC曲线更加关注正样本,而ROC则兼顾了两者。
3.AUC越大,反映出正样本的预测结果更加靠前。(推荐的样本更能符合用户的喜好)
4.当正负样本比例失调时,比如正样本1个,负样本100个,则ROC曲线变化不大,此时用PR曲线更加能反映出分类器性能的好坏。
5.PR曲线和ROC绘制的方法不一样。

PR曲线和ROC曲线区别参考链接:
http://www.fullstackdevel.com/computer-tec/data-mining-machine-learning/501.html

附:商汤计算PR题

#-*-coding:utf-8-*-
def s4j5(a):
    a1=float(int(a*100))
    tag=a*100-a1
    if tag>=0.5:
        return((a1+1)/100)
    else:
        return(a1/100)

N = int(raw_input())
recall = 0.0
labelCon = []
totalPos = 0
for i in range(N):
    temp = [xx for xx in raw_input().strip().split()]
    target, confidence = int(temp[0]), float(temp[0])
    labelCon.append([target, confidence])
    if target==1:
        totalPos+=1
count = 0
posCount = 0
correctCount = 0
FP = 0
FN = 0
someRecallDict = {0.3:0,
            0.4:0,
            0.5:0,
            0.6:0,
            0.7:0,
            0.8:0,
            0.9:0}

someRecall = [0.3,0.4,0.5,0.6,0.7,0.8,0.9]
res = []
posId = 0
predictPos = 0
for target, confidence in labelCon:
    count+=1
    if confidence>=0.5:
        predictPos+=1 # 预测为正类的样本个数
    if target==0:
        if confidence>=0.5:
            FP+=1
    if target==1:
        posCount+=1
        if confidence>=0.5:
            correctCount+=1
        else:
            FN+=1
        recall = float(correctCount)/float(totalPos)
        if posId<=6:
            if recall==someRecall[posId] and someRecallDict[someRecall[posId]]==0:
                someRecallDict[someRecall[posId]]=1
                posId+=1
                precision = int(str(s4j5(float(correctCount)/float(predictPos))*100).split('.')[0])
                res.append(precision)

for i in res:
    print(i)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148428.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • amos中路径p值_输出无向图的路径

    amos中路径p值_输出无向图的路径基于Amos路径分析的输出结果参数详解1Outputpathdiagram2AmosOutput2.1AnalysisSummary2.2NotesforGroup2.3VariableSummary2.4ParameterSummary2.5Assessmentofnormality2.6Observationfarthestfromthecentroid(Mahalanobisdistance)2.7SampleMoments2.8Notesfor

    2022年8月24日
  • 传奇自己架设自己玩_怎么架设传奇服务器

    传奇自己架设自己玩_怎么架设传奇服务器需要的东西与操作1.版本可以去论坛版本库2.DBC2000(百度有下)3.配套登录器(有些引擎自带)简单来说单机架设分为三步1.配置引擎2.上传列表,配置登录器3.补丁解压到客户端根目录首先下好版本之后会有两个压缩包,一个为服务端,一个为游戏补丁;1.百度下载好DBC2000进行解压然后安装即可。2.服务端解压到D盘,名字必须为Mirserver3.开始配置DBC2000,安装好DBC2000之后,在你的电脑里面的控制面板里面会有一个DBE-打开之后右键空白部分new

    2022年10月6日
  • YIQ颜色空间_简述RGB颜色

    YIQ颜色空间_简述RGB颜色首先,我们先来了解下有关颜色的基本概念一、色彩的基本概念1、彩色的三要素亮度:即人眼对光的明亮程度的感受。色调:人眼能看到的颜色种类,与光的波长有关饱和度:颜色深浅程度。与各种颜色混入白光的比例有关。以上色调+饱和度=色度2、三基色原理三基色可以通过适当比例的混合组成自然界中任何一种颜色由于人眼对于红绿蓝三种色光最为敏感,并且由这三种颜色能组成的颜色范围最广,故一般选用…

    2022年10月28日
  • 用matlab产生时域离散信号实验报告(有关数字信号处理)

    1.正弦序列离散正弦序列的MATLAB表示与连续信号类似,只不过是用stem函数而不是用plot函数来画出序列的波形。下面就是正弦序列的MATLAB源程序。%正弦序列实现程序k=0:39;fk=sin(pi/6*k);stem(k,fk)2.指数序列离散指数序列的一般形式为,可用MATLAB中的数组幂运算(即点幂运算)c*来实现。下面为用MATLAB编写绘制离散时

    2022年4月10日
  • 浅析AnyCast网络技术「建议收藏」

    浅析AnyCast网络技术「建议收藏」什么是BGPAnyCast?BGPanycast就是利用一个(多个)as号码在不同的地区广播相同的一个ip段。利用bgp的寻路原则,短的aspath会选成最优路径(bgp寻路原则之n),从而优化了访问速度。其实bgpanycast是不同服务器用了相同的ip地址。阿里的DNS就是使用了BGPAnyCast“其实bgpanycast是不同服务器用了相同的ip地址。”言简意赅啊!D…

    2022年5月24日
  • OpenStack实践(二):Linux Bridge方式实现Local Network[通俗易懂]

    OpenStack实践(二):Linux Bridge方式实现Local Network[通俗易懂]OpenStack实践(二):Linux Bridge方式实现Local Network

    2022年4月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号