浅谈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(urlparse)模板的使用方法总结
Oct 13 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
手把手教你如何安装Pycharm(详细图文教程)
Nov 28 Python
Python制作exe文件简单流程
Jan 24 Python
Python类的继承、多态及获取对象信息操作详解
Feb 28 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
Python流程控制语句的深入讲解
Jun 15 Python
Python暴力破解Mysql数据的示例
Nov 09 Python
Python图片验证码降噪和8邻域降噪
Aug 30 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
Codeigniter的dom类用法实例
2015/06/26 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
javaScript Array(数组)相关方法简述
2009/07/25 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
2016/01/27 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
以windows service方式运行Python程序的方法
2015/06/03 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
南京青奥会口号
2014/06/12 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android