浅谈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实现的金山快盘的签到程序
Jan 17 Python
使用python编写脚本获取手机当前应用apk的信息
Jul 21 Python
Python采用raw_input读取输入值的方法
Aug 18 Python
python将文本转换成图片输出的方法
Apr 28 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
Python使用Django实现博客系统完整版
Sep 29 Python
Python中flatten( )函数及函数用法详解
Nov 02 Python
python模拟实现分发扑克牌
Apr 22 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
pycharm导入源码的具体步骤
Aug 04 Python
Python实现疫情地图可视化
Feb 05 Python
讲解Python实例练习逆序输出字符串
May 06 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与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
google地图的路线实现代码
2009/08/20 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
js轮播图代码分享
2016/07/14 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
[04:44]DOTA2西游记战队视频彩蛋流出 师徒开黑巧遇林书豪
2016/08/03 DOTA
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python部署web开发程序的几种方法
2017/05/05 Python
Python3字符串encode与decode的讲解
2019/04/02 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
python实现图片压缩代码实例
2019/08/12 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
程序员跳槽必看面试题总结
2013/06/28 面试题
职业生涯规划书前言
2014/04/15 职场文书
服务承诺书格式
2014/05/21 职场文书
志愿者宣传口号
2014/06/17 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
使用Ajax实现进度条的绘制
2022/04/07 Javascript