浅谈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实现从url中提取域名的几种方法
Sep 26 Python
python类继承用法实例分析
Oct 10 Python
解决Python字典写入文件出行首行有空格的问题
Sep 27 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
tensorflow 获取模型所有参数总和数量的方法
Jun 14 Python
如何不用安装python就能在.NET里调用Python库
Jul 12 Python
详解Django配置优化方法
Nov 18 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
python中使用input()函数获取用户输入值方式
May 03 Python
PyCharm Community安装与配置的详细教程
Nov 24 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
Python图片检索之以图搜图
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
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
php session的锁和并发
2016/01/22 PHP
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
python 快速排序代码
2009/11/23 Python
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
2018/09/17 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
简单了解python协程的相关知识
2019/08/31 Python
python编写猜数字小游戏
2019/10/06 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
scrapy-splash简单使用详解
2021/02/21 Python
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
Java servlet面试题
2012/03/04 面试题
制药工程专业毕业生推荐信
2013/12/24 职场文书
小学综合实践活动总结
2014/07/07 职场文书
学校消防安全责任书
2014/07/23 职场文书
2014年人事部工作总结
2014/12/03 职场文书
严以修身专题学习研讨会发言材料
2015/11/09 职场文书
python双向链表实例详解
2022/05/25 Python
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python