浅谈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中的JSON模块
Apr 08 Python
python实现基本进制转换的方法
Jul 11 Python
python实现多线程抓取知乎用户
Dec 12 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
Python 获取当前所在目录的方法详解
Aug 02 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
python合并已经存在的sheet数据到新sheet的方法
Dec 11 Python
利用nohup来开启python文件的方法
Jan 14 Python
在python中logger setlevel没有生效的解决
Feb 21 Python
Python捕获异常堆栈信息的几种方法(小结)
May 18 Python
django 获取字段最大值,最新的记录操作
Aug 09 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
求PHP数组最大值,最小值的代码
2011/10/31 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
PHP实现的简单缓存类
2015/07/29 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
php递归函数怎么用才有效
2018/02/24 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
vue-router传参用法详解
2019/01/19 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
小程序自定义导航栏兼容适配所有机型(附完整案例)
2020/04/26 Javascript
简单介绍Python中的RSS处理
2015/04/13 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
对python函数签名的方法详解
2019/01/22 Python
Python requests获取网页常用方法解析
2020/02/20 Python
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
新闻记者个人求职的自我评价
2013/11/28 职场文书
小区消防演习方案
2014/02/21 职场文书
医院保洁服务方案
2014/06/11 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
golang switch语句的灵活写法介绍
2021/05/06 Golang
详解java如何集成swagger组件
2021/06/21 Java/Android