解决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检测字符串中是否包含某字符集合中的字符
May 21 Python
Python实现统计单词出现的个数
May 28 Python
django用户登录和注销的实现方法
Jul 16 Python
对python产生随机的二维数组实例详解
Dec 13 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
selenium获取当前页面的url、源码、title的方法
Jun 12 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 Python
解决pyqt5异常退出无提示信息的问题
Apr 08 Python
Python  word实现读取及导出代码解析
Jul 09 Python
python3 re返回形式总结
Nov 20 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 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模板中出现空行解决方法
2011/03/08 PHP
PHP中使用file_get_contents post数据代码例子
2015/02/13 PHP
ThinkPHP控制器详解
2015/07/27 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
script标签属性type与language使用选择
2012/12/02 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
2014/08/22 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
如何查找网页漏洞
2016/06/22 面试题
软件缺陷的分类都有哪些
2014/08/22 面试题
人力资源部经理助理岗位职责
2014/03/04 职场文书
校园运动会广播稿
2014/10/06 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
团组织推优材料
2014/12/29 职场文书
谢师宴邀请函
2015/02/02 职场文书
JavaScript实现两个数组的交集
2022/03/25 Javascript