浅谈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中编写数据库模块的教程
Apr 29 Python
python 的列表遍历删除实现代码
Apr 12 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 Python
python 异常处理总结
Oct 18 Python
浅谈Python类的__getitem__和__setitem__特殊方法
Dec 25 Python
python爬虫之自动登录与验证码识别
Jun 15 Python
python面试题小结附答案实例代码
Apr 11 Python
python利用datetime模块计算程序运行时间问题
Feb 20 Python
python 用opencv实现图像修复和图像金字塔
Nov 27 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 Python
python中if嵌套命令实例讲解
Feb 25 Python
Python+Tkinter制作专属图形化界面
Apr 01 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实现快速排序法函数代码
2012/08/27 PHP
php中定时计划任务的实现原理
2013/01/08 PHP
如何使用php输出时间格式
2013/08/31 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
php实现cookie加密的方法
2015/03/10 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
一端时间轮换的广告
2006/06/26 Javascript
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
详解jQuery选择器
2016/12/21 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
vuex的使用步骤
2021/01/06 Vue.js
wxPython的安装图文教程(Windows)
2017/12/28 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
python随机生成库faker库api实例详解
2019/11/28 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
高中生自我评语大全
2014/01/19 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
python3实现无权最短路径的方法
2021/05/12 Python
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL