浅谈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实现文件分组复制到不同目录的例子
Jun 04 Python
Python中的字符串类型基本知识学习教程
Feb 04 Python
python中print的不换行即时输出的快速解决方法
Jul 20 Python
Python实现的简单dns查询功能示例
May 24 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
Jun 19 Python
在PyCharm下使用 ipython 交互式编程的方法
Jan 17 Python
Python获取一个用户名的组ID过程解析
Sep 03 Python
Python with语句和过程抽取思想
Dec 23 Python
如何基于Python实现数字类型转换
Feb 07 Python
Python如何操作docker redis过程解析
Aug 10 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
Jan 06 Python
java关于string最常出现的面试题整理
Jan 18 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 获取文件权限函数介绍
2013/07/11 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
Python递归函数实例讲解
2019/02/27 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
pygame实现打字游戏
2021/02/19 Python
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
四年级语文教学反思
2014/02/05 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
岗位说明书范文
2014/05/07 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
在校证明模板
2015/06/17 职场文书