解决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使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 Python
pandas 快速处理 date_time 日期格式方法
Nov 12 Python
Python数据类型之Tuple元组实例详解
May 08 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
Nov 11 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 Python
Python导入模块包原理及相关注意事项
Mar 25 Python
解决paramiko执行命令超时的问题
Apr 16 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
php批量修改表结构实例
2017/05/24 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
JS验证不重复验证码
2017/02/10 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
2019/09/27 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
openCV提取图像中的矩形区域
2020/07/21 Python
python3实现飞机大战
2020/11/29 Python
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
2014大学班主任工作总结
2014/11/08 职场文书
2015年班干部工作总结
2015/04/29 职场文书
小学教师见习总结
2015/06/23 职场文书
spring boot实现文件上传
2022/08/14 Java/Android