浅谈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深入学习之内存管理
Aug 31 Python
使用Python编写爬虫的基本模块及框架使用指南
Jan 20 Python
Python多进程multiprocessing用法实例分析
Aug 18 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
对Python的zip函数妙用,旋转矩阵详解
Dec 13 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
python实现两张图片的像素融合
Feb 23 Python
kali中python版本的切换方法
Jul 11 Python
python3.6编写的单元测试示例
Aug 17 Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
May 31 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php生成与读取excel文件
2016/10/14 PHP
Convert Seconds To Hours
2007/06/16 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
Python3多线程基础知识点
2019/02/19 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
土木工程毕业生自荐信
2013/09/21 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
质量提升方案
2014/06/16 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
MySQL 使用索引扫描进行排序
2021/06/20 MySQL