浅谈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写的PHPMyAdmin暴力破解工具代码
Aug 06 Python
Python multiprocessing模块中的Pipe管道使用实例
Apr 11 Python
python3抓取中文网页的方法
Jul 28 Python
Python 多线程抓取图片效率对比
Feb 27 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
python 产生token及token验证的方法
Dec 26 Python
Python 一键获取百度网盘提取码的方法
Aug 01 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
selenium WebDriverWait类等待机制的实现
Mar 18 Python
Python  word实现读取及导出代码解析
Jul 09 Python
python与idea的集成的实现
Nov 20 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
收音机术语解释
2021/03/01 无线电
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
php实现URL加密解密的方法
2016/11/17 PHP
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
js评分组件使用详解
2017/06/06 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
Python中的choice()方法使用详解
2015/05/15 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
python递归法解决棋盘分割问题
2019/07/17 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
英国著名的药妆网站:Escentual
2016/07/29 全球购物
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
德国足球商店:OUTFITTER
2019/05/06 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
应届大学生的推荐信
2013/11/20 职场文书
金融管理应届生求职信
2014/02/20 职场文书
法定授权委托证明书
2014/09/27 职场文书
教师个人教学总结
2015/02/11 职场文书
辩论会主持词
2015/07/03 职场文书
Go语言并发编程 sync.Once
2021/10/16 Golang
python区块链持久化和命令行接口实现简版
2022/05/25 Python