Python中ROC曲线绘制

 更新时间:2021年12月09日 14:26:06   作者:KING GUO  
大家好,本篇文章主要讲的是Python中ROC曲线绘制,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

首先以支持向量机模型为例

先导入需要使用的包,我们将使用roc_curve这个函数绘制ROC曲线!

from sklearn.svm import SVC
from sklearn.metrics import roc_curve
from sklearn.datasets import make_blobs
from sklearn. model_selection import train_test_split
import matplotlib.pyplot as plt
%matplotlib inline

然后使用下面make_blobs函数,生成一个二分类的数据不平衡数据集;

使用train_test_split函数划分训练集和测试集数据;

训练SVC模型。

X,y = make_blobs(n_samples=(4000,500), cluster_std=[7,2], random_state=0)
 
X_train,X_test,y_train, y_test = train_test_split(X,y,random_state=0)
 
clf = SVC(gamma=0.05).fit(X_train, y_train)

fpr,tpr, thresholds = roc_curve(y_test,clf.decision_function(X_test))
 
plt.plot(fpr,tpr,label='ROC')
 
plt.xlabel('FPR')
plt.ylabel('TPR')

从上面的代码可以看到,我们使用roc_curve函数生成三个变量,分别是fpr,tpr, thresholds,也就是假正例率(FPR)、真正例率(TPR)和阈值。

而其中的fpr,tpr正是我们绘制ROC曲线的横纵坐标,于是我们以变量fpr为横坐标,tpr为纵坐标,绘制相应的ROC图像如下:

值得注意的是上面的支持向量机模型使用的decision_function函数,是自己所特有的,而其他模型不能直接使用。

比如说我们想要使用其他模型(例如决策树模型)的结果绘制ROC,直接套用上面的代码,会报错,会显示没有这个函数。

以决策树模型为例,解决上述问题(适用于除向量机外的模型)

导入决策树模型包以及训练模型的代码省略了,只需要手动改一改就行了,我们直接看绘图的代码!

fpr,tpr, thresholds = roc_curve(y_test,clf.predict_proba(X_test)[:,1])
 
 
plt.plot(fpr,tpr,label='ROC')
 
plt.xlabel('FPR')
plt.ylabel('TPR')

可以看到我们直接把只适用于支持向量机模型的函数decision_function更改成predict_proba(X_test)[:,1]就行了,让我们看看结果:

可以看到哈,决策树模型在这个数据集上的泛化能力不如支持向量机哈!!!学废了吗。

我可以失败,但绝不会认输!

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

相关文章

  • Python实现飞机大战项目

    Python实现飞机大战项目

    这篇文章主要为大家详细介绍了Python实现飞机大战项目,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • python判断一个对象是否可迭代的例子

    python判断一个对象是否可迭代的例子

    今天小编就为大家分享一篇python判断一个对象是否可迭代的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 自动在Windows中运行Python脚本并定时触发功能实现

    自动在Windows中运行Python脚本并定时触发功能实现

    讲一下在Python中写好了一个脚本之后,怎么自动双击一个程序自动就跑起来。以及,怎么在Windows 10中设计定期定时触发并跑脚本,有需要的朋友可以参考下
    2021-09-09
  • 关于yolov8训练的一些改动及注意事项

    关于yolov8训练的一些改动及注意事项

    Yolo是一种目标检测算法,目标检测的任务是从图片中找出物体并给出其类别和位置,这篇文章主要给大家介绍了关于yolov8训练的一些改动及注意事项,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • 利用Python模拟谷歌的小恐龙游戏

    利用Python模拟谷歌的小恐龙游戏

    谷歌流量器中有个很有名的彩蛋:当你网络出现问题时,就会出现一个“小恐龙游戏”。本文就主要为大家介绍了如何用Python模拟实现这一小游戏,感兴趣的同学可以学习一下
    2021-12-12
  • Python如何将PDF拆分成多个文件(最新推荐)

    Python如何将PDF拆分成多个文件(最新推荐)

    在 Python 中,你可以使用 PyPDF2 库来拆分 PDF 文件,以下是一个简单的示例,演示如何将一个 PDF 文件拆分为多个单页 PDF 文件,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • Python提取Linux内核源代码的目录结构实现方法

    Python提取Linux内核源代码的目录结构实现方法

    下面小编就为大家带来一篇Python提取Linux内核源代码的目录结构实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • MySQL适配器PyMySQL详解

    MySQL适配器PyMySQL详解

    这篇文章主要为大家详细介绍了MySQL适配器PyMySQL的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Python如何实现大型数组运算(使用NumPy)

    Python如何实现大型数组运算(使用NumPy)

    这篇文章主要介绍了Python如何实现大型数组运算,文中讲解非常细致,帮助大家更好的了解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Python threading的使用方法解析

    Python threading的使用方法解析

    这篇文章主要介绍了Python threading的使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论