浅谈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标准库与第三方库详解
Jul 22 Python
Python语法快速入门指南
Oct 12 Python
解决pandas read_csv 读取中文列标题文件报错的问题
Jun 15 Python
Flask模拟实现CSRF攻击的方法
Jul 24 Python
python如何生成网页验证码
Jul 28 Python
python使用正则表达式来获取文件名的前缀方法
Oct 21 Python
Python分支语句与循环语句应用实例分析
May 07 Python
Python collections模块使用方法详解
Aug 28 Python
django 框架实现的用户注册、登录、退出功能示例
Nov 28 Python
python3 webp转gif格式的实现示例
Dec 10 Python
pytorch梯度剪裁方式
Feb 04 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 11 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获得文件扩展名三法
2006/11/25 PHP
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
jQuery.extend 函数的详细用法
2012/06/27 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
在Python中用split()方法分割字符串的使用介绍
2015/05/20 Python
Python sys.argv用法实例
2015/05/28 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
工商管理系学生的自我评价分享
2013/11/29 职场文书
吸烟检讨书2000字
2014/02/13 职场文书
农村党员一句话承诺
2014/05/30 职场文书
世博会口号
2014/06/20 职场文书
服务宗旨标语
2014/07/01 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
运动会宣传稿100字
2015/07/23 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
Django rest framework如何自定义用户表
2021/06/09 Python
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL