解决ROC曲线画出来只有一个点的问题


Posted in Python onFebruary 28, 2020

之前在做kaggle比赛时,有个比赛使用AUC来评比的,当时试着画了ROC曲线,结果出来的下图这样的图形。跟平时的ROC曲线差好远,就只有一个点。而别人家的都是很多转折的,为啥我的不一样。

我的图如下:

解决ROC曲线画出来只有一个点的问题

正常的图(sklearn上面截取的):

解决ROC曲线画出来只有一个点的问题

思考过后,发现原来:

ROC曲线,一般适用于你的分类器输出一个“概率值”,即这个样本属于某个类的概率是多少。 如此的话,你就需要设定一个阈值, 大于这个阈值属于正类,小于这个阈值属于负类。

从而,对于这个阈值P0, 就会得到对应的TPR, FPR, 也就是ROC曲线上的一个点,你设置不同的阈值,就会得到不同的TPR, FPR, 从而构成ROC曲线。

通常来说 阈值降低,即进入正类的门槛变低, TPR会变大,但是FPR也会变大, 看他们谁变的快。

之前画线的时候直接用了分类的预测值,而没有用上概率这玩意,被划分为正类的概率。。修改下程序,求多一个概率就能画出正确的图形啦。

如果你用GDBT算法的时候:

gbc = GradientBoostingClassifier()
gbc.fit(x_train, y_train)
resu = gbc.predict(x_test) #进行预测
y_pred_gbc = gbc.predict_proba(x_test)[:,1] ###这玩意就是预测概率的
fpr, tpr, threshold = roc_curve(y_test, y_pred_gbc) ###画图的时候要用预测的概率,而不是你的预测的值
plt.plot(fpr, tpr, 'b', label='AUC = %0.2f' % rocauc)#生成ROC曲线
plt.legend(loc='lower right')
plt.plot([0, 1], [0, 1], 'r--')
plt.xlim([0, 1])
plt.ylim([0, 1])
plt.ylabel('真正率')
plt.xlabel('假正率')
plt.show()

解决ROC曲线画出来只有一个点的问题

以上这篇解决ROC曲线画出来只有一个点的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
python学生信息管理系统
Mar 13 Python
Sanic框架安装与简单入门示例
Jul 16 Python
Python使用pymongo模块操作MongoDB的方法示例
Jul 20 Python
python动态进度条的实现代码
Jul 03 Python
在cmd中查看python的安装路径方法
Jul 03 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 Python
Django集成富文本编辑器summernote的实现步骤
May 31 Python
关于Python中进度条的六个实用技巧分享
Apr 05 Python
Python编程快速上手——正则表达式查找功能案例分析
Feb 28 #Python
利用python画出AUC曲线的实例
Feb 28 #Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 #Python
AUC计算方法与Python实现代码
Feb 28 #Python
Python编程快速上手——Excel表格创建乘法表案例分析
Feb 28 #Python
Python计算IV值的示例讲解
Feb 28 #Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 #Python
You might like
PHP 文件缓存的性能测试
2010/04/25 PHP
PHP 编写大型网站问题集
2010/05/07 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
2013/06/10 PHP
php获取操作系统语言代码
2013/11/04 PHP
PHP闭包函数详解
2016/02/13 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
强制设为首页代码
2006/06/19 Javascript
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
js实现整体缩放页面适配移动端
2020/03/31 Javascript
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
Python实现模拟登录及表单提交的方法
2015/07/25 Python
Win10下Python环境搭建与配置教程
2016/11/18 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
python实现名片管理系统项目
2019/04/26 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
爱他美官方海外旗舰店:Aptamil奶粉
2017/12/22 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
为什么要使用servlet
2016/01/17 面试题
总经理助理职责
2014/02/04 职场文书
安全生产责任书范本
2014/04/15 职场文书
组织鉴定材料
2014/06/02 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android