zoukankan      html  css  js  c++  java
  • ROC曲线绘制

    ROC 曲线绘制

    个人的浅显理解:1.ROC曲线必须是针对连续值输入的,通过选定不同的阈值而得到光滑而且连续的ROC曲线,故通常应用于Saliency算法评价中,因为可以选定0~255中任意的值进行阈值分割,从而得到ROC曲线;

                  2.对于图像分割算法的评价不适合用ROC曲线进行评价,除非能够得到连续值,而不是二值图像;图像分割算法适合采用准确率、召回率、F1指标的平均值进行评价。

                  3.针对已经分割好的二值图像:分割出了一系列的分割二值图,除非分割的结果足够大,否则很难得到良好的ROC曲线,一般都是波动很大的,如下图所示。

          

        matlab中已经有现成的针对分类的ROC曲线绘制函数。

    目前理解的并不透彻,以下资料可供进一步学习,记录以备忘:

    http://blog.sina.com.cn/s/blog_4cf8aad30100gt1g.html

    http://www.ilovematlab.cn/thread-62962-1-1.html

    http://blog.csdn.net/fuhpi/article/details/8813455

    论文:The relationship between Precision-Recall and ROC curves.pdf

    matlab中plotroc函数的用法说明:

    ROC曲线是通用的分类器评价工具,matlab函数中自带了绘制该曲线的函数plotroc。

    plotroc函数的原型为:plotroc(targets, outputs)

    其中参数targets是一个矩阵,代表测试集,每一列表示一个测试样本的标签

    如果有两类样本,比如第1,2,5个样本属于第1类,第3,4,6个样本属于第2类....则targets应为:

    1 1 0 0 1 0 ...

    0 0 1 1 0 1 ...

    如果只有一类样本,包含了负样本,则只要一行,用1表示正样本,0表示负样本即可,比如targets为:

    1 0 1 1 0 0 0 0 1 ...

    参数outputs也是一个矩阵,代表分类结果,同样每一列表示一个测试样本的分类结果

    同样如果有两类样本,则应有两个分类器,每一列记录了每个测试样本在两个分类器上的得分,此时outputs为:

    0.8 0.85 0.2 0.75 0.21 ...

    0.8 0.01 0.9 0.23 0.67 ...

    如果只有一类,则outputs只有一行,如:

    0.8 0.6 0.8 0.7 0.05 0.3 0.03 ...

    注意,得分必须在[0, 1]的区间内,可以自己规约一下。

    我们将相应的测试标签targets和对应的分类得分outputs输入plotroc中就可以绘制出相应的ROC曲线了。

  • 相关阅读:
    林大妈的JavaScript基础知识(二):编写JavaScript代码前的一些简单工作
    林大妈的JavaScript基础知识(一):JavaScript简史
    制作X509证书
    浏览器对象模型
    JS事件
    CSS操作
    Element节点
    Document节点
    Dom中的一些接口
    DOM节点的属性和方法
  • 原文地址:https://www.cnblogs.com/jiayouwyhit/p/3519276.html
Copyright © 2011-2022 走看看