解决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 相关文章推荐
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
快速入门python学习笔记
Dec 06 Python
python的继承知识点总结
Dec 10 Python
Python简单过滤字母和数字的方法小结
Jan 09 Python
pandas读取CSV文件时查看修改各列的数据类型格式
Jul 07 Python
Python中pymysql 模块的使用详解
Aug 12 Python
WxPython实现无边框界面
Nov 18 Python
简单介绍django提供的加密算法
Dec 18 Python
Python3搭建http服务器的实现代码
Feb 11 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
python 装饰器的基本使用
Jan 13 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
global.php
2006/12/09 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
jscript之List Excel Color Values
2007/06/13 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
html+css+js实现xp window界面及有关功能
2013/03/26 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
python中reload重载实例用法
2020/12/15 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
2021/01/09 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
医院护士的求职信
2014/01/03 职场文书
网络研修随笔感言
2014/02/17 职场文书
《乡愁》教学反思
2014/02/18 职场文书
招标保密承诺书
2015/01/20 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
幼儿园见习总结
2015/06/23 职场文书
python实现自动化群控的步骤
2021/04/11 Python
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js