浅谈ROC曲线的最佳阈值如何选取


Posted in Python onFebruary 28, 2020

为了获取ROC曲线的最佳阈值,需要使用一个指标--约登指数,也称正确指数。

借助于matlab的roc函数可以得出计算。

% 1-specificity = fpr
% Sensitivity = tpr;
[tpr,fpr,thresholds] =roc(Tar',Val');
RightIndex=(tpr+(1-fpr)-1);
[~,index]=max(RightIndex);
%
RightIndexVal=RightIndex(index(1));
tpr_val=tpr(index(1));
fpr_val=fpr(index(1));
thresholds_val=thresholds(index(1));
disp(['平均准确率: ',num2str((RightIndexVal+1)*0.5)]);
disp(['最佳正确率: ',num2str(tpr_val)])
disp(['最佳错误率: ',num2str(fpr_val)])

至此计算结束了。

补充拓展:利用阈值分割目标图像

一.全局阈值

浅谈ROC曲线的最佳阈值如何选取

方法一:OTSU方法

otsu法(最大类间方差法,有时也称之为大津算法)使用的是聚类的思想,把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小,通过方差的计算来寻找一个合适的灰度级别来划分。 所以可以在二值化的时候采用otsu算法来自动选取阈值进行二值化。otsu算法被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响。因此,使类间方差最大的分割意味着错分概率最小。

选择阈值k,把像素分为两类:

浅谈ROC曲线的最佳阈值如何选取

T=graythresh(f)即可实现用方法一计算归一化的阈值。

二.局域阈值

当背景照度不均匀时,全局阈值方法可能失效,此时,用局域变化的阈值函数T(x,y)分割图像f(x,y):

浅谈ROC曲线的最佳阈值如何选取

matlab实现程序:

clear all;close all;clc;
I=imread('C:\Users\ASUS\Desktop\图像处理学习文件\大二下\使用阈值分割目标_15\Fig0926(a)(rice).tif');
figure
imshow(I)
title('original image')
k=graythresh(I);
I1=im2bw(I,k);
figure
imshow(I1)
se=strel('disk',10); %产生半径为10的圆盘形结构元素
fo=imopen(I1,se);  %用结构元素对灰度图像进行开运算
figure
imshow(fo)
title('Opened image')
f2=imtophat(I,se); %用原图像减去开运算图像,即对图像进行顶帽运算
figure
imshow(f2,[])  %显示顶帽运算结果
title('Top-hat transformation')
f2=im2double(f2);
T=graythresh(f2);
bw2=im2bw(f2,T); %对顶帽处理后的图像进行阈值处理
figure
imshow(bw2,[])
title('Thresholded top-hat image') %显示阈值处理后的顶帽图像

以上这篇浅谈ROC曲线的最佳阈值如何选取就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的面向对象思想分析
Jan 14 Python
简单实现python数独游戏
Mar 30 Python
Python实现求解一元二次方程的方法示例
Jun 20 Python
python hbase读取数据发送kafka的方法
Dec 27 Python
在Pycharm中设置默认自动换行的方法
Jan 16 Python
python time.sleep()是睡眠线程还是进程
Jul 09 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
Python字符串hashlib加密模块使用案例
Mar 10 Python
python如何从键盘获取输入实例
Jun 18 Python
python 如何对logging日志封装
Dec 02 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 Python
python用tkinter开发的扫雷游戏
Jun 01 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
Feb 28 #Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 #Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 #Python
Python post请求实现代码实例
Feb 28 #Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 #Python
Python接口测试get请求过程详解
Feb 28 #Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 #Python
You might like
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
flexigrid 参数说明
2010/11/23 Javascript
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
2019/04/17 Javascript
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
Python中GeoJson和bokeh-1的使用讲解
2019/01/03 Python
python实现合并两个排序的链表
2019/03/03 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
基于python实现操作git过程代码解析
2020/07/27 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
护士思想汇报
2014/01/12 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
小学国庆节活动方案
2014/02/11 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
教师个人自我评价范文
2014/04/13 职场文书
党员一帮一活动总结
2014/07/08 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
解决pytorch-gpu 安装失败的记录
2021/05/24 Python
golang内置函数len的小技巧
2021/07/25 Golang