淺談ROC曲線的最佳閾值如何選取
為了獲取ROC曲線的最佳閾值,需要使用一個指標--約登指數(shù),也稱正確指數(shù)。
借助于matlab的roc函數(shù)可以得出計算。
% 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)])
至此計算結(jié)束了。
補充拓展:利用閾值分割目標圖像
一.全局閾值
方法一:OTSU方法
otsu法(最大類間方差法,有時也稱之為大津算法)使用的是聚類的思想,把圖像的灰度數(shù)按灰度級分成2個部分,使得兩個部分之間的灰度值差異最大,每個部分之間的灰度差異最小,通過方差的計算來尋找一個合適的灰度級別來劃分。 所以可以在二值化的時候采用otsu算法來自動選取閾值進行二值化。otsu算法被認為是圖像分割中閾值選取的最佳算法,計算簡單,不受圖像亮度和對比度的影響。因此,使類間方差最大的分割意味著錯分概率最小。
選擇閾值k,把像素分為兩類:
T=graythresh(f)即可實現(xiàn)用方法一計算歸一化的閾值。
二.局域閾值
當背景照度不均勻時,全局閾值方法可能失效,此時,用局域變化的閾值函數(shù)T(x,y)分割圖像f(x,y):
matlab實現(xiàn)程序:
clear all;close all;clc; I=imread('C:\Users\ASUS\Desktop\圖像處理學(xué)習(xí)文件\大二下\使用閾值分割目標_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); %產(chǎn)生半徑為10的圓盤形結(jié)構(gòu)元素 fo=imopen(I1,se); %用結(jié)構(gòu)元素對灰度圖像進行開運算 figure imshow(fo) title('Opened image') f2=imtophat(I,se); %用原圖像減去開運算圖像,即對圖像進行頂帽運算 figure imshow(f2,[]) %顯示頂帽運算結(jié)果 title('Top-hat transformation') f2=im2double(f2); T=graythresh(f2); bw2=im2bw(f2,T); %對頂帽處理后的圖像進行閾值處理 figure imshow(bw2,[]) title('Thresholded top-hat image') %顯示閾值處理后的頂帽圖像
以上這篇淺談ROC曲線的最佳閾值如何選取就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
pytorch從csv加載自定義數(shù)據(jù)模板的操作
這篇文章主要介紹了pytorch從csv加載自定義數(shù)據(jù)模板的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03Python報錯ImportError:?IProgress?not?found.?Please?update
在使用Jupyter Notebook或JupyterLab進行交互式編程時,我們可能會遇到各種導(dǎo)入錯誤,本文就來介紹一下Python報錯ImportError:?IProgress?not?found.?Please?update?jupyter?and?ipywidgets解決,感興趣的可以了解一下2024-06-06對Python 2.7 pandas 中的read_excel詳解
今天小編就為大家分享一篇對Python 2.7 pandas 中的read_excel詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05