精华内容
下载资源
问答
  • ROC曲线绘制

    2018-05-05 21:29:10
    在MATLAB中绘制ROC曲线,可以对分类器的性能进行评价。
  • ROC曲线绘制.txt

    2021-04-20 23:24:26
    可绘制最佳截断值,多个ROC曲线的AUC值差异性比较,解决ROC曲线绘制中的各项痛点,标准全面,直接更换数据即可使用
  • roc曲线绘制2.rar

    2021-05-07 16:32:45
    人脸识别roc曲线绘制python脚本代码
  • 但是ROC曲线绘制的原理是什么,或者说如何一步步画出ROC曲线,以及如何用SPSS软件快速绘制出ROC曲线呢?对于很多新手朋友来说,对上述问题并不十分清楚。笔者这里对上述问题进行详细阐述,以期大家对ROC曲线有更深入...

    《本文同步发布于“脑之说”微信公众号,欢迎搜索关注~~》

    ROC曲线(Receiver operating characteristic curve),即受试者工作特征曲线,主要用来评价某个指标对两类被试(如病人和健康人)分类/诊断的效果,以及寻找最佳的指标临界值使得分类效果最好。但是ROC曲线绘制的原理是什么,或者说如何一步步画出ROC曲线,以及如何用SPSS软件快速绘制出ROC曲线呢?对于很多新手朋友来说,对上述问题并不十分清楚。笔者这里对上述问题进行详细阐述,以期大家对ROC曲线有更深入的了解。

    ROC曲线的主要用途

    前面已经提到,ROC曲线的主要用途有两个:1)评价某个/多个指标对两类被试(如病人和健康人)分类/诊断的效果。通过画出某个指标的ROC曲线就可以很明确地看出其分类/诊断效果的好坏;另外,可以同时画出多个指标的ROC曲线并计算各自的AUC(area under ROC,ROC曲线下的面积),就可以知道哪个指标的分类/诊断效果更好。2)寻找最佳的指标阈值使得分类效果最佳。

    ROC曲线的绘制原理

    ROC曲线是如何绘制出来的呢?在此之前,我们先学习几个基本的概念。1)真阳性率(TPR, True positive rate):所有实际为阳性的样本被正确地判断为阳性的个数与所有实际为阳性的样本个数之比,TPR又称为Sensitivity(灵敏度);2)假阳性概率(FPR, False positive rate):所有实际为阴性的样本被错误地判断为阳性的个数与所有实际为阴性的样本个数之比,FPR等于1-Specificity。
    ROC曲线其实就是以FPR为横坐标,TPR为纵坐标绘制出来的曲线。

    下面以一个具体的例子来详细了解ROC曲线是如何绘制的。
    如图1所示,假设有10个被试,分成两类,Class=1的表示阳性样本,Class=0的表示阴性样本,Value表示测量的某个指标值。
    1)首先,依据Value值从大到小对这10个被试进行排序(图1已经是按此规则排过序的);
    2)接下来,依次把Value值作为阈值(即阈值依次为0.9,0.8,0.7,…,0.05),当被试的Value值大于等于此阈值时被认为是阳性,否则此被试被认为是阴性。比如说,当以Value=0.6作为阈值,那么被试1,2,3,4被分类成阳性样本,其他被试被分类成阴性样本,据此,我们可以计算得到TPR=3/5,FPR=1/5。这样,我们就可以得到一组(TPR,FPR)值,依次把这10个Value值作为阈值,我们就可以得到10组(TPR,FPR)值,把这10组(TPR,FPR)绘制出来得到的曲线就是ROC曲线。
    在这里插入图片描述图1

    如何用SPSS绘制ROC曲线

    当样本数据较多时,这样手算TPR和FPR比较麻烦,那么如何利用SPSS绘制ROC曲线呢?接下来,笔者通过实例操作教大家学会用SPSS绘制ROC曲线。

    1. 部分数据如图2所示:Group变量的值为0或1,表示两类被试,Value值表示测量的某个指标。
      在这里插入图片描述
      图2

    2. 点击SPSS菜单栏中“分析—ROC曲线图”,如图3所示。
      在这里插入图片描述
      图3

    3. 参数设置如图4,最后点击确定即可。
      在这里插入图片描述
      图4

    4. ROC曲线如图5所示,其中AUC=0.832.
      在这里插入图片描述
      图5

    5. ROC曲线对应的坐标点值如图6所示,这些坐标点表示不同阈值下得到的TPR和FPR.
      在这里插入图片描述
      图6

    6. 如何寻找最佳的指标阈值使得分类效果最好?最佳的指标阈值一般处于ROC曲线的最左上角,即TPR最大同时FPR最小。一般用Youden’s index来确定最佳指标阈值,Youden’s index=TPR-FPR=TPR-Specifity+1。可以利用图6的坐标数据,计算每个坐标处的Youden’s index,当Youden’s index最大时对应的指标值即为最佳的指标阈值。

    总结
    本文主要对ROC曲线绘制的原理以及如何用SPSS软件快速绘制出ROC曲线进行了详细的阐述,希望对大家的研究有所帮助。

    展开全文
  • roc曲线绘制

    2018-07-22 22:04:24
    label=’ROC fold %d (AUC = %0.2f)’ % (i, roc_auc)) i += 1 plt.plot([0, 1], [0, 1], linestyle=’–’, lw=2, color=’r’, label=’Luck’, alpha=.8) mean_tpr = np.mean(tprs, axis=0)#axis=0,...

    “””
    import numpy as np
    from scipy import interp
    import matplotlib.pyplot as plt
    from itertools import cycle
    from sklearn import svm, datasets
    from sklearn.metrics import roc_curve, auc
    from sklearn.model_selection import StratifiedKFold
    # #############################################################################
    # Data IO and generation
    # Import some data to play with
    iris = datasets.load_iris()
    x = iris.data
    y = iris.target
    x, y = x[y != 2], y[y != 2]
    n_samples, n_features = x.shape
    # Add noisy features
    random_state = np.random.RandomState(0)#用0表示每次产生的随机数相同
    X = np.c_[x, random_state.randn(n_samples, 200 * n_features)]#两个矩阵相链接,行数不变,列数相加;
    #randn产生正态分布分布的数值
    # #############################################################################
    ## Classification and ROC analysis
    #
    ## Run classifier with cross-validation and plot ROC curves
    cv = StratifiedKFold(n_splits=6)
    classifier = svm.SVC(kernel=’linear’, probability=True,
    random_state=random_state)
    tprs = []
    aucs = []
    mean_fpr = np.linspace(0, 1, 100)
    plt.figure()
    i = 0
    for train, test in cv.split(X, y):
    print(‘test:’,test.shape)
    probas_ = classifier.fit(X[train], y[train]).predict_proba(X[test])
    # Compute ROC curve and area the curve
    fpr, tpr, thresholds = roc_curve(y[test], probas_[:, 1])
    # print(thresholds.shape)
    # print(thresholds)
    # print(‘1:’,tpr)
    tprs.append(interp(mean_fpr, fpr, tpr))#插值运算,6*100
    # print(‘2:’,len(tpr))
    # print(‘3:’,len(tprs[0]))#100
    tprs[-1][0] = 0.0#保证每一条的第一个位置都是0
    roc_auc = auc(fpr, tpr)#auc值,是一个值
    aucs.append(roc_auc)#aucs:6*1
    plt.plot(fpr, tpr, lw=1, alpha=0.3,
    label=’ROC fold %d (AUC = %0.2f)’ % (i, roc_auc))
    i += 1
    plt.plot([0, 1], [0, 1], linestyle=’–’, lw=2, color=’r’,
    label=’Luck’, alpha=.8)
    mean_tpr = np.mean(tprs, axis=0)#axis=0,求每列的平均值,所以返回一个1*100的数组
    mean_tpr[-1] = 1.0
    mean_auc = auc(mean_fpr, mean_tpr)
    std_auc = np.std(aucs)
    plt.plot(mean_fpr, mean_tpr, color=’b’,
    label=r’Mean ROC (AUC = %0.2f ± %0.2f)’ % (mean_auc, std_auc),
    lw=2, alpha=.8)
    std_tpr = np.std(tprs, axis=0)
    tprs_upper = np.minimum(mean_tpr + std_tpr, 1)
    tprs_lower = np.maximum(mean_tpr - std_tpr, 0)
    plt.fill_between(mean_fpr, tprs_lower, tprs_upper, color=’grey’, alpha=.2,
    label=r’± 1 std. dev.’)#填充区域颜色
    #
    #plt.xlim([-0.05, 1.05])
    #plt.ylim([-0.05, 1.05])
    #plt.xlabel(‘False Positive Rate’)
    #plt.ylabel(‘True Positive Rate’)
    #plt.title(‘Receiver operating characteristic example’)
    plt.legend(loc=”lower right”)
    #plt.show()

    展开全文
  • 主要介绍了基于python实现ROC曲线绘制广场解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 基于实例与MATLAB的ROC曲线绘制比较研究.pdf
  • ROC曲线绘制原理即AUC的意义详解

    千次阅读 2020-06-07 22:24:48
    ROC曲线绘制原理即AUC意义详解 ROC曲线绘制原理 ROC曲线常常用来判定一个分类器的分类效果,想要探究ROC曲线的绘制原理,首先要弄清楚以下几个概念。 在一个分类任务中,样品往往是要分为两类。比如“有病”vs“没...

    云走雾走走行程,救苦救难救灾星

    有求必应,出古洞四海扬名,在深山修真养性

    ROC曲线绘制原理即AUC意义详解

    ROC曲线绘制原理

    ROC曲线常常用来判定一个分类器的分类效果,想要探究ROC曲线的绘制原理,首先要弄清楚以下几个概念。
    在这里插入图片描述
    在一个分类任务中,样品往往是要分为两类。比如“有病”vs“没病”、“男人”vs“女人”。而往往我们的分类器的分类效果并没有那么好,所以会出现分错的情况。根据这些错分的样品数量,我们得到一个概念——假阳性率(FPR):
    在这里插入图片描述
    与之对应的是真阳性率(TPR):
    在这里插入图片描述
    那么所谓ROC曲线,便是在不同阈值下,由TPR和FPR所构成的图像了。
    在这里插入图片描述

    这个时候你肯定还是看不懂,因为你看得懂就不会翻到我这篇文章了…(酸里酸气)

    ok,我从一个分类问题开始,一步步的绘制ROC曲线。

    这里呢,通过你选定的超平面分类算法,将两类点成功分类。其中红色的点为阳性,绿色的点为阴性。
    可以看到这条超平面的分类效果是很棒的,没有分类错误的现象。
    在这里插入图片描述而超平面的公式是在这里插入图片描述

    所以你可以利用得出的W来为每个点算出一个值,具体数值已经在图片中标出。得数的绝对值越大,证明离超平面越远,分类越清晰。

    如果你理解不了加黑字体的意思,我还有下一个版本的:

    通过分类算法找到了一条“分类用的线”,并且把每个点到这条线的距离都标在了图片上,距离这条线越远,证明分类正确的把握越大。

    那么ROC曲线是怎么画的呢?

    把握最大的点开始(在分类线最上方的点),不断的将点划入阳类,同时计算真阳性率(TPR)和假阳性率(FPR)
    注:这里是从点的值为负数开始,也就是线的上方开始不断的将点划入阳类

    为了方便下文理解,重新放进这张图
    在这里插入图片描述
    最开始呢,我们把点(1,4)划入阳性集,此时a=1,b=0,真实阳性个数(T)=3,真实阴性个数(F)=3
    那么真阳性率为/1/3,假阳性率为0

    之后我们把(1,3)划入阳性集,此时a=2,b=0,真实阳性个数(T)=3,真实阴性个数(F)=3
    那么真阳性率为/2/3,假阳性率为0

    之后我们把(1,2)划入阳性集,此时a=3,b=0,真实阳性个数(T)=3,真实阴性个数(F)=3
    那么真阳性率为1,假阳性率为0

    之后我们把(2,1)划入阳性集,此时a=3,b=1,真实阳性个数(T)=3,真实阴性个数(F)=3
    那么真阳性率为1,假阳性率为1/3
    注:从这里开始,将阴性点划入阳性集,出现假阳性

    之后我们把(3,1)划入阳性集,此时a=3,b=2,真实阳性个数(T)=3,真实阴性个数(F)=3
    那么真阳性率为1,假阳性率为2/3

    之后我们把(3,1)划入阳性集,此时a=3,b=3,真实阳性个数(T)=3,真实阴性个数(F)=3
    那么真阳性率为1,假阳性率为1

    通过将不同点划入阳性集所得到的真阳性率和假阳性率,就可以绘制ROC曲线啦!

    建议用笔自己画一画!!!!

    好嘞,现在开始说一下这个ROC的特点,通过上述步骤可以看出来,每划入一个点到阳性集,都会使得 a增大 1 (判断正确——真阳性数量增加),或b增大1(判断错误——假阳性数量增加)。当a增大时,曲线会向上生长一小段,当b增大时图像会向右生长一小段。所以ROC的特点就是只能向上或是向右生长,不能向下向左生长!

    那么问题来了,所谓的AUC是什么?为什么AUC越大表示分类效果越好?

    AUC的意义

    AUC即为ROC曲线下的面积。由于真阳性率和假阳性率的范围都是[0,1],所以AUC最大值为1。

    上述的ROC曲线的AUC是1,证明分类效果非常棒。

    但是请想一想,如果我们的数据如下图所示:
    在这里插入图片描述
    会发生什么?

    他会造成真阳性率没有到达1的时候,假阳性率大于0。换句话说,他会让曲线还没有生长到最高处的时候,右拐,这样AUC就不会达到1.。而当判断错误的点(即假阳性点)离分类线越远,这种右拐现象越早发生,曲线下面积AUC就越小,而右拐现象发生的越晚AUC面积就越大

    如果离分类线很远的点还被分类错了(AUC相对较小),即分类正确的把握很大的点被分错了,那么说明我们的分类算法或是分类特征是有问题的。如果离线很近的点被分错了(AUC相对较大),即分类正确的把握很小的点被分错了,那只能说数据有问题(笑)或者这种问题是我们可以接受的。

    我们当然希望分类错误的点尽可能的靠近分类线,这样就可以说是数据的问题而不是算法的问题(笑)。这就是为什么AUC越大,说明分类效果越好。

    如果你对我上述说明充分理解,那么请看以下叙述
    通过将点到分类线的距离排序,所得的对应标签排序:
    AUC1 ----> a,a,a,a,a,b,b,b,b,b

    AUC2-----> a,a,a,a,b,a,b,b,b,b

    AUC3----->a,b,a,a,a,a,b,b,b,b

    有AUC1>AUC2>AUC3

    同时ROC曲线还特别适合我们样本点分类不均的适合衡量分类器的效能

    这里算是介绍完了ROC和AUC。
    就说到这里啦!有帮助的话帮忙点个赞哦!!

    展开全文
  • 基于非计算机专业人员的计算机应用能力稍差,而又要经常使用受试者工作特征(ROC)曲线作为判断的评价方法,介绍了ROC曲线的概念、原理和优点,以及如何在MATLAB下绘制ROC曲线。以评价分离信号与噪声数据为例,分别...
  • ROC曲线绘制及AUC计算

    千次阅读 2016-10-22 02:41:54
    ROC曲线绘制及AUC计算 思想改变世界,技术连接你我。果果,今天过得好吗?—Joly Zhang ROC曲线可以直观的反映分类性能,而AUC则可定量的对分类器进行测评。今天我们以简洁的方式说明ROC曲线的绘制及AUC的计算方法...

    ROC曲线绘制及AUC计算



    ROC曲线可以直观的反映分类性能,而AUC则可定量的对分类器进行测评。今天我们以简洁的方式说明ROC曲线的绘制及AUC的计算方法。

    方法一 按定义进行计算

    步骤:
    1.1给定一个常量N,把区间[0,1]均等地分成N分,依次取k=0,1/N,2/N,…N-1/N,1作为阈值,对测试数据进行分类。
    1.2 对于每一个给定的阈值,计算:
    a. TP 、FP、TN、FN实例的个数。
    b.

    TPR = nTP/(nTP + nFN);
    FPR = nFP/(nFP + nTN);

    c.由(FPR,TPR)构成ROC曲线上的点。
    1.3 通过一系列坐标点会制ROC曲线。
    1.4 计算AUC:
    a.将坐标点按照横着FPR排序
    b.计算第i个坐标点和第i+1个坐标点的间距 dx;
    c.获取第i(或者i+1)个坐标点的纵坐标y;
    d.计算面积微元ds = ydx;
    e.对面积微元进行累加,得到AUC。

    Matlab实现

    function [ auc ] = ROCDrawing( predict_label ) 
    %% ploting ROC and computing AUC.  Version(1)
    %  input param:   predict_label n-by-2 matrices.
    %                 column 1: probabilities for positive instances.
    %                 column 2: labels of instances.
    %  output param:  auc.
    %                          --by.Joly Zhang   10-22-2016
    %
    %%
    L= 1000;
    p = zeros(L,2);
    ix = 1;
    for k = 0:1/L:1
        preT = predict_label(:,1) > k;
        preF = predict_label(:,1) <= k;
        TP = predict_label(preT,2) == 1;
        FP = predict_label(preT,2) == 0;
        FN = predict_label(preF,2) == 1;
        TN = predict_label(preF,2) == 0;
        TPR = sum(TP)/(sum(TP)+sum(FN));
        FPR = sum(FP)/(sum(FP)+sum(TN));
        p(ix,:) = [FPR, TPR];
        ix = ix+1;
    end
    plot(p(1:L-3,1),p(1:L-3,2),'-');
    hold on;
    plot(0:1/L:1,0:1/L:1,'.-g');
    %% 计算AUC
    [vl,id] = sort(p(:,1));
    s = 0;
    for i_blob = 1:L-1;
        s = s+ p(id(i_blob+1),2)*(vl(i_blob+1)-vl(i_blob));
    end
    auc =s;
    end
    

    方法二 基于对ROC曲线的理解

    我们来简单的分析一下:
    1.横轴FPR表示所有的负实例中,错误地分类为正实例的比例。那么就可以认为,横轴[0,1]区间被划分为无数个小区间,每个区间长度为dx=1/(nFP+nTN)。并且,每出现一个负实例,ROC曲线局部沿横轴方向往右移动一个单位距离。
    2.纵轴PTR表示所有的正实例中,准确地预测为正实例的比例。那么就可以认为,纵轴[0,1]区间被划分为无数个小区间,每个区间长度为dy=1/(nTP+nFN)。并且,每出现一个正实例,ROC曲线局部沿横轴方向往上移动一个单位距离。
    3.由此,我们可以从坐标原点(0,0)向右上方运动至(1,1)每次移动方向由预测实例的实际分类标签所决定。(当然,在此之前要对预测概率进行排序。移动方向也可以从右上角至坐标原点)。
    4.每当在水平方向上移动时,不要忘了计算面积微元ds =ydx,并进行累加哦。

    Matlab实现

    function [ auc ] = ROCDrawing( predict_label )
    %% ploting ROC and computing AUC. Version(2)
    %  input param:   predict_label n-by-2 matrices.
    %                 column 1: probabilities for positive instances.
    %                 column 2: labels of instances.
    %  output param:  auc.
    %                          --by.Joly Zhang   10-22-2016
    %
    %%
    NP = sum(predict_label(:,2)==1);
    NN = sum(predict_label(:,2)==0);
    step_x = 1/NN;
    step_y = 1/NP;
    [~,id] = sort(predict_label(:,1));
    len =size(predict_label,1);
    point = zeros(len,2);
    point(len,:) = [1,1];%start from right-top position
    s = 0;
    for k = len:-1:2
        if predict_label(id(k),2) ==1%从右上至左下,向下
            point(k-1,:) =[point(k,1),point(k,2) - step_y];
    
        else
            point(k-1,:) =[point(k,1)-step_x,point(k,2)];
            s = s + point(k,2);
        end
    end
    plot(point(:,1),point(:,2),'r');
    hold on;
    plot(0:1/len:1,0:1/len:1,'.');
    auc = s*step_x;
    end
    展开全文
  • 前面花了两三天整单因素ROC曲线诊断的绘制和CUTOFF的取值ENT小张:干货|ROC曲线绘制中常见的问题及其解决方案​zhuanlan.zhihu.com结果这两天突发奇想,又给自己挖了一个坑跳,指标1、2、3往往单因素AUC值不够大,那...
  • 该代码是用PYTHON编写的绘制ROC曲线和计算AUC分数的,对做异常检测,故障诊断等领域的朋友很有帮助
  • ROC曲线绘制(python+sklearn+多分类)

    千次阅读 2020-07-29 13:06:51
    ROC曲线绘制要点(仅记录) 要点: 1、ROC用于度量模型性能 2、用于二分类问题,如若遇到多分类也以二分类的思想进行操作。 (文档说的很清楚了:官方文档) 3、提取数据,直接用API即可 from sklearn.metrics import...
  • ROC结果源数据:鸢尾花数据集(仅采用其中的两种类别的花进行训练和检测)Summaryfeatures:['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']实例:[5.1, 3.5, 1.4, 0.2]target...
  • ROC结果源数据:鸢尾花数据集(仅采用其中的两种类别的花进行训练和检测)Summaryfeatures:[‘sepal length (cm)’, ‘sepal width (cm)’, ‘petal length (cm)’, ‘petal width (cm)’]实例:[5.1, 3.5, 1.4, 0.2...
  • 一、ROC曲线 二、fpr和tpr文本生成 三、绘图 一、ROC曲线 ROC曲线(Receiver Operator characteristic Curve)是一种已经被广泛接受的系统匹配算法测试指标,它是匹配分数阈值、误识率以及拒识率之间的一种关系...
  • ROC结果源数据:鸢尾花数据集(仅采用其中的两种类别的花进行训练和检测)Summaryfeatures:['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']实例:[5.1, 3.5, 1.4, 0.2]target...
  • ROC曲线绘制原理详解

    2020-09-18 21:44:35
    简介 ROC曲线,全称为receiver operating characteristic curve,即接收者操作特征曲线,反映了真阳性率(TPR)随假阳性率(FPR)的变化趋势,在机器学习中常用于二分类模型的评价及选择。
  • 神经网络的ROC曲线绘制代码

    千次阅读 2019-10-17 19:07:47
    绘制ROC曲线的关键是弄懂ROC曲线的含义,然后改变分类概率的阈值。 代码说明: predict是用tensorflow写的神经网络计算出来的分类概率, j是从0%~100%的分类概率阈值(默认的二分类概率阈值是...
  • 1、编程实现ROC曲线绘制的函数roc_plot。其中,分类概率使用matlab自带的朴素贝叶斯函数得到。 测试数据 测试代码如下: load('testingData.mat') load('trainingData.mat') nb = NaiveBayes.fit(trAttr, trLabels);...
  • 机器学习之支持向量机SVM之python实现ROC曲线绘制(二分类和多分类)
  • ROC曲线绘制与计算

    2020-11-12 10:50:55
    假设现在有一个二分类问题,先引入两个概念: 真正例率(TPR):正例中预测为... ROC曲线的横轴为假正例率,纵轴为真正例率,范围都是[0,1],现在我们开始画图——根据从大到小遍历预测值,把当前的预测值当做阈值
  • ROC曲线绘制(详细)以及模型选择

    千次阅读 多人点赞 2020-11-24 19:22:39
    在我们在讲解ROC曲线之前 首先要明确混淆矩阵的概念 如下图: 真正率 TPR:预测为正例且实际为正例的样本占所有正例样本(真实结果为正样本)的比例。 假正率 FPR:预测为正例但实际为负例的样本占所有负例样本...
  • 混淆矩阵,准确率,召回率,特异性,ROC曲线绘制一、混淆矩阵二、评价指标三、ROC曲线与AUC 一、混淆矩阵 pos (预测的) neg (预测的) pos (真正的) TP FN neg (真正的) FP TN ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,404
精华内容 2,161
关键字:

roc曲线怎么绘制