ROC曲线学习

ROC曲线:全称 Receiver Operating Characteristic曲线,即受试者工作特性曲线,在机器学习领域常用于判断分类器的好坏。

要了解ROC曲线,首先要了解该曲线的横纵坐标 —— FPR(1-特异度)和TPR(召回率或者灵敏度)。

1. 基本概念 —— 混淆矩阵

绘制混淆矩阵https://www.cnblogs.com/qi-yuan-008/p/11675499.html

2. ROC曲线的横坐标是FPR值,纵坐标是TPR值;每指定一个threshold,就对应一个FPR-TPR值对。

threshold 表示的是:测试样本中每个样本预测为正的概率,并且从大到小排列。

AUC的值表示的是:ROC曲线下方区域的面积大小 —— 即对曲线进行积分所得;一般来说,AUC的值越大,分类器的分类性能越好。

3. Python绘制ROC曲线:

以支持向量机分类为例,假设训练样本为:x_train,y_train,测试样本为:x_test,y_test

from sklearn.svm import SVC
from sklearn.metrics import confusion_matrix
from sklearn import metrics
import matplotlib.pyplot as plt

def svm_func(x_train,y_train,x_test,y_test):
    clf = SVC(kernel = ‘linear‘, verbose=True)
    clf.fit(x_train,y_train)
    pred = clf.predict(x_test)

    #混淆矩阵, labels为数据中各类标签值,这里0为负样本,2为正样本
    cm = confusion_matrix(y_test, pred, labels=[0, 2]) #纵坐标是y_test,横坐标是pred
    print(cm)

    # 绘制ROC曲线
    fpr, tpr, thresholds = metrics.roc_curve(y_test, pred, pos_label=2) # pos_label表示选定该标签是正,其他的均为负,绘制ROC曲线
    auc = metrics.auc(fpr, tpr)  #计算AUC值

    # # 设置绘图风格
    plt.figure()
    plt.style.use(‘ggplot‘)

    # 绘制ROC曲线
    plt.plot(fpr, tpr,‘‘)
    # 绘制参考线
    plt.plot((0,1),(0,1),‘r--‘)
    # 添加文本
    plt.text(0.5,0.5,‘AUC值为%.2f‘ % auc, fontsize=16)

    plt.title(‘支持向量机模型的ROC曲线‘)
    plt.xlabel(‘1-specificity‘)
    plt.ylabel(‘Sensitivity‘)

    # 中文和负号的正常显示
    plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘]
    plt.rcParams[‘axes.unicode_minus‘] = False

    # 去除图形顶部边界和右边界的刻度
    plt.tick_params(top=False, right=False)
    plt.show()

注:

[1]. ROC曲线适用于二分类,但是可以扩展至多分类。

[2]. 当负样本数量远远大于正样本数量时,ROC曲线可能会不正确,这时可用PR曲线(Precision-Recall曲线)。

##

参考:

https://blog.csdn.net/u012429555/article/details/82973387

https://www.cnblogs.com/Zhi-Z/p/8728168.html

https://blog.csdn.net/qq_30992103/article/details/99730059

https://zhuanlan.zhihu.com/p/25212301

https://www.jianshu.com/p/2ca96fce7e81

原文地址:https://www.cnblogs.com/qi-yuan-008/p/12643880.html

时间: 2024-10-02 22:43:51

ROC曲线学习的相关文章

【数据挖掘】朴素贝叶斯算法计算ROC曲线的面积

题记:          近来关于数据挖掘学习过程中,学习到朴素贝叶斯运算ROC曲线.也是本节实验课题,roc曲线的计算原理以及如果统计TP.FP.TN.FN.TPR.FPR.ROC面积等等.往往运用ROC面积评估模型准确率,一般认为越接近0.5,模型准确率越低,最好状态接近1,完全正确的模型面积为1.下面进行展开介绍: ROC曲线的面积计算原理 一.朴素贝叶斯法的工作过程框架图 二.利用weka工具,找到训练的预处理数据 1.利用朴素贝叶斯算法对weather.nominal.arff文件进行

python sklearn画ROC曲线

preface:最近<生物信息学>多次谈到AUC,ROC这两个指标,正在做的project,要求画ROC曲线,sklearn里面有相应的函数,故学习学习. AUC: ROC: 具体使用参考sklearn: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html http://scikit-learn.org/stable/auto_examples/model_selection/plot_

ROC曲线 VS PR曲线

sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程,QQ:231469242) https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share https://www.plob.org/article/12476.html(原文链接)  初识ROC曲线 1. RO

R语言ROC曲线下的面积 - 评估逻辑回归中的歧视

原文链接:http://tecdat.cn/?p=6310 在讨论ROC曲线之前,首先让我们在逻辑回归的背景下考虑校准和区分之间的区别. 良好的校准是不够的 对于模型协变量的给定值,我们可以获得预测的概率.如果观察到的风险与预测的风险(概率)相匹配,则称该模型已被很好地校准.也就是说,如果我们要分配一组值的大量观察结果,这些观察结果的比例应该接近20%.如果观察到的比例是80%,我们可能会同意该模型表现不佳 - 这低估了这些观察的风险. 我们是否应满足于使用模型,只要它经过良好校准?不幸的是.为

精确率与召回率,RoC曲线与PR曲线

在机器学习的算法评估中,尤其是分类算法评估中,我们经常听到精确率(precision)与召回率(recall),RoC曲线与PR曲线这些概念,那这些概念到底有什么用处呢? 首先,我们需要搞清楚几个拗口的概念: 1. TP, FP, TN, FN True Positives,TP:预测为正样本,实际也为正样本的特征数 False Positives,FP:预测为正样本,实际为负样本的特征数 True Negatives,TN:预测为负样本,实际也为负样本的特征数 False Negatives,

ROC曲线、AUC、Precision、Recall、F-measure理解及Python实现

本文首先从整体上介绍ROC曲线.AUC.Precision.Recall以及F-measure,然后介绍上述这些评价指标的有趣特性,最后给出ROC曲线的一个Python实现示例. 一.ROC曲线.AUC.Precision.Recall以及F-measure 二分类问题的预测结果可能正确,也可能不正确.结果正确存在两种可能:原本对的预测为对,原本错的预测为错:结果错误也存在两种可能:原本对的预测为错,原本错的预测为对,如Fig 1左侧所示.其中Positives代表预测是对的,Negatives

ROC曲线和PR曲线绘制【转】

TPR=TP/P :真正率:判断对的正样本占所有正样本的比例.  Precision=TP/(TP+FP) :判断对的正样本占判断出来的所有正样本的比例 FPR=FP/N :负正率:判断错的负样本占所有负样本的比例. Recall = TP/(TP+FN) = TP/P,就是TPR. ROC曲线:横轴是FPR,纵轴是TPR. 绘制出的曲线应该在y=x直线之上,曲线积分的结果就是AUC的值.AUC越大则系统分类性能越好. PR曲线:横轴是Precision,纵轴是recall. precision

ROC曲线

ROC曲线指受试者工作特征曲线 / 接收器操作特性曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,再以敏感性为纵坐标.(1-特异性)为横坐标绘制成曲线,曲线下面积越大,诊断准确性越高.在ROC曲线上,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值. ROC曲线的例子 考虑一个二分问题,即将实例分成正

从TP、FP、TN、FN到ROC曲线、miss rate、行人检测评估

想要在行人检测的evaluation阶段要计算miss rate,就要从True Positive Rate讲起:miss rate = 1 - true positive rate true positive rate毕竟是一个rate,是一个比值.是谁和谁比呢?P 要从TP.FP.TN.FN讲起. 考虑一个二分类问题:一个item,它实际值有0.1两种取值,即负例.正例:而二分类算法预测出来的结果,也只有0.1两种取值,即负例.正例.我们不考虑二分类算法细节,当作黑箱子就好:我们关心的是,预