解决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基类函数的重载与调用实例分析
Jan 12 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
python批量赋值操作实例
Oct 22 Python
python 调用有道api接口的方法
Jan 03 Python
详解Python3 pickle模块用法
Sep 16 Python
PyCharm第一次安装及使用教程
Jan 08 Python
pyinstaller打包找不到文件的问题解决
Apr 15 Python
Python如何实现自带HTTP文件传输服务
Jul 08 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 Python
Python+Appium实现自动抢微信红包
May 21 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字符串过滤,转换函数代码
2012/05/01 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
php 多个变量指向同一个引用($b = &$a)用法分析
2019/11/13 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
js运动应用实例解析
2015/12/28 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
vue组件与复用详解
2018/04/08 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
简述Python中的面向对象编程的概念
2015/04/27 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
在Python中表示一个对象的方法
2019/06/25 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
python编写计算器功能
2019/10/25 Python
Python中的全局变量如何理解
2020/06/04 Python
Django REST 异常处理详解
2020/07/15 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
python 通过exifread读取照片信息
2020/12/24 Python
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
门诊挂号室室长岗位职责
2013/11/27 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
2014年财务科工作总结
2014/11/11 职场文书
荆州古城导游词
2015/02/06 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
奖学金申请书(范文)
2019/08/14 职场文书