浅谈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检测生僻字的实现方法
Oct 23 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
使用python实现ANN
Dec 20 Python
配置 Pycharm 默认 Test runner 的图文教程
Nov 30 Python
Python脚本完成post接口测试的实例
Dec 17 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
python3 map函数和filter函数详解
Aug 26 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
python读取多层嵌套文件夹中的文件实例
Feb 27 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
Apr 09 Python
python 使用OpenCV进行简单的人像分割与合成
Feb 02 Python
详解Python中*args和**kwargs的使用
Apr 07 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删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
利用ajax和PHP实现简单的流程管理
2017/03/23 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
详解Puppeteer 入门教程
2018/05/09 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
JS实现星星海特效
2019/12/24 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
python中map、any、all函数用法分析
2015/04/21 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
Python常见数字运算操作实例小结
2019/03/22 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
英国最大的线上保健品零售商之一:Vitamin Planet
2016/12/01 全球购物
简历里的自我评价范文
2014/02/24 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
2014年客房部工作总结
2014/11/22 职场文书
综合素质自我评价评语
2015/03/06 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers