解决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 相关文章推荐
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
Python中的pygal安装和绘制直方图代码分享
Dec 08 Python
python使用matplotlib库生成随机漫步图
Aug 27 Python
python进行文件对比的方法
Dec 24 Python
python中的列表与元组的使用
Aug 08 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
Python datetime包函数简单介绍
Aug 28 Python
python Event事件、进程池与线程池、协程解析
Oct 25 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
python实现发送QQ邮件(可加附件)
Dec 23 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反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
yii分页组件用法实例分析
2015/12/28 PHP
根据分辩率调用不同的CSS.
2007/01/08 Javascript
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
Python抽象类的新写法
2015/06/18 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
详解Django中间件执行顺序
2018/07/16 Python
Python requests库用法实例详解
2018/08/14 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
Python实现序列化及csv文件读取
2020/01/19 Python
150行python代码实现贪吃蛇游戏
2020/04/24 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
中学生演讲稿
2014/04/26 职场文书
幼儿评语大全
2014/04/30 职场文书
优秀英文求职信范文
2015/03/19 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
董事长秘书工作总结
2015/08/14 职场文书
SpringAop日志找不到方法的处理
2021/06/21 Java/Android
部分武汉产收音机展览
2022/04/07 无线电
优化Mysql查询的示例
2022/04/26 MySQL
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android