python绘制ROC曲线的示例代码

 更新时间:2023年07月20日 10:44:50   作者:张小李的风  
本文主要介绍了python绘制ROC曲线的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

受试者工作特征(Receiver Operating Characteristic,ROC)的基本知识

  • ROC曲线可以用来评估分类器的输出质量。
  • ROC曲线Y轴为真阳性率,X轴为假阳性率。这意味着曲线的左上角是“理想”点——假阳性率为0,真阳性率为1。
  • 上述的理想情况实际中很难存在,但它确实表示面积下曲线(AUC)越大通常分类效率越好。
  • ROC曲线的“陡度”也很重要,坡度越大,则越有降低假阳性率,升高真阳性率的趋势。
  • ROC曲线通常用于二元分类中研究分类器的输出(也可在多分类中使用,需要对标签进行二值化【比如ABC三类,进行分类时将标签进行二值化处理[A(1)、BC(0)】、【B(1)、AC(0)】、【C(1)、AB(0)】,比如本文不作讨论)。

python 实现

  • 绘制ROC曲线主要基于python 的sklearn库中的两个函数,roc_curv和auc两个函数。
  • roc_curv 用于计算出fpr(假阳性率)和tpr(真阳性率)
  • auc用于计算曲线下面积,输入为fpr、和tpr

roc_curv函数详解

  • roc_curve(y_true, y_score, pos_label=None, sample_weight=None,drop_intermediate=True)
  • 输入值
  • y_true :一个和样本数量一致的一维向量,数据是正确的二元标签。如果标签不是{- 1,1}或{0,1},则可以显式指定pos_label。
  • y_score:一个样本数量一致的一维向量,目标分数可以是阳性类的概率估计、置信度值或决策的非阈值度量(在某些分类器上由“decision_function”返回,比如SVM)。简单的理解就是对测试集进行分类后得到的一个用于衡量该类是阳性还是阴性的分数度量,分类器也是根据这个分数来判断测试集是阳性样本还是阴性样本,因此通常都可以在分类器的中间过程拿到这个分数。
  • pos_label:样本标签,如果y_true不满足{0,1},{-1,1}标签时则需要通过该参数指定那些是阳性样本,其余的则为阴性样本,默认不输入。
  • sample_weight:一个样本数量一致的一维向量,指定每个样本的权重,默认不输入。
  • drop_intermediate:为true时(默认= True)会删除一些不会出现在ROC曲线上的次优阈值。
  • 返回值
  • fpr:假阳性率序列,数量与thread一致的一维向量。
  • tpr:真阳性率序列,数量与thread一致的一维向量。
  • thread:该序列是一个递减序列,在每一个阈值下对y_score进行划分,大于的视为阳性,小于的视为阴性,从而计算出该阈值下的fpr。

代码示例

# 导包
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, auc
# 计算
fpr, tpr, thread = roc_curve(y_test, y_score)
roc_auc[i] = auc(fpr, tpr)
# 绘图
plt.figure()
lw = 2
plt.plot(fpr, tpr, color='darkorange',
         lw=lw, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.savefig('roc.png',)
plt.show()

y_test 数据示例:

0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1

y_score:数据示例:

-0.763011 -0.202245 0.118015 -0.907809 -0.0111619 -0.604873 0.0228349 -0.610769 -0.375728
 -0.470174 -0.422242 -0.335587 -0.227239 -0.0785673  -0.533834 0.121637 -0.713569 -0.551115 
 0.379913 -0.111076

更多SVM及ROC的介绍见文章:

python基于sklearn的SVM和留一法(LOOCV)进行二分类
python:Sklearn SVM使用留一法时如何绘制ROC曲线与计算AUC

到此这篇关于python绘制ROC曲线的示例代码的文章就介绍到这了,更多相关python绘制ROC曲线内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用python如何实现猫捉老鼠小游戏

    利用python如何实现猫捉老鼠小游戏

    这篇文章主要给大家介绍了关于利用python如何实现猫捉老鼠小游戏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 用Python做一个简单的图书管理系统

    用Python做一个简单的图书管理系统

    这篇文章主要介绍了用Python做一个简单的图书管理系统,有“还书““借阅”“添加书籍”等功能,文中提供了部分实现代码和解决思路,有一定的参考价值,需要的朋友快来一起看看吧
    2023-04-04
  • python命令 -u参数用法解析

    python命令 -u参数用法解析

    这篇文章主要介绍了python命令 -u参数用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python图像的增强处理操作示例【基于ImageEnhance类】

    Python图像的增强处理操作示例【基于ImageEnhance类】

    这篇文章主要介绍了Python图像的增强处理操作,结合实例形式分析了使用ImageEnhance类处理图片的亮度、对比度、色度以及锐度等相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • Python接口传输url与flask数据详解

    Python接口传输url与flask数据详解

    这篇文章主要介绍了Python通过接口传输url与flask数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • 详解Python查找算法的实现(线性,二分,分块,插值)

    详解Python查找算法的实现(线性,二分,分块,插值)

    这篇文章主要为大家介绍了Python中常见的四种查找算法的实现:线性、二分、分块和插值,文中通过图片详细讲解了它们实现的原理与代码,需要的可以参考一下
    2022-04-04
  • python计算数字或者数组的阶乘的实现

    python计算数字或者数组的阶乘的实现

    本文主要介绍了python计算数字或者数组的阶乘,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 使用python动态生成波形曲线的实现

    使用python动态生成波形曲线的实现

    今天小编就为大家分享一篇使用python动态生成波形曲线的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python实现windows下模拟按键和鼠标点击的方法

    Python实现windows下模拟按键和鼠标点击的方法

    这篇文章主要介绍了Python实现windows下模拟按键和鼠标点击的方法,涉及Python模拟实现鼠标及键盘事件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • python数据分析之公交IC卡刷卡分析

    python数据分析之公交IC卡刷卡分析

    这篇文章主要介绍了python数据分析之公交IC卡,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04

最新评论