日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

用matlab画出M1和M2的ROC曲线,ROC曲线及其matlab实现ROC曲线的绘画

發(fā)布時間:2023/12/19 循环神经网络 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用matlab画出M1和M2的ROC曲线,ROC曲线及其matlab实现ROC曲线的绘画 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ROC曲線(Receiver Operating Characteristic Curve)是利用Classification模型真正率(True Positive Rate)和假正率(False Positive Rate)作為坐標(biāo)軸,圖形化表示分類方法的準(zhǔn)確率的高低。

ROC圖的一些概念定義::真正(True Positive , TP)被模型預(yù)測為正的正樣本假負(fù)(False Negative , FN)被模型預(yù)測為負(fù)的正樣本假正(False Positive , FP)被模型預(yù)測為正的負(fù)樣本真負(fù)(True Negative , TN)被模型預(yù)測為負(fù)的負(fù)樣本

真正率(TPR)TPR = TP /(TP + FN)正樣本預(yù)測結(jié)果數(shù)/正樣本實際數(shù)。在ROC曲線中,TPR作為Y軸

假正率(FPR)FPR = FP /(FP + TN)被預(yù)測為正的負(fù)樣本結(jié)果數(shù)/負(fù)樣本實際數(shù)。在ROC曲線中,FPR作為X軸

關(guān)于ROC曲線的相關(guān)概念的解釋,請參閱cowboy_wz的博客ROC曲線:http://blog.csdn.net/chl033/article/details/4507544

我在此主要做的事情是畫出ROC曲線工程實現(xiàn)方面的一些解釋。我們設(shè)計一個函數(shù),此函數(shù)需要有一個模型預(yù)測值predict和數(shù)據(jù)標(biāo)簽值ground_truth作為輸入?yún)?shù)。分為幾步進(jìn)行實現(xiàn)。

(1)統(tǒng)計數(shù)據(jù)標(biāo)簽值ground_truth(及y)中分類為0和分類為1的數(shù)據(jù)數(shù)目:

pos_num=sum(ground_truth==1);neg_num=sum(ground_truth);

(2)對利用模型求出的預(yù)測值predict由低到高進(jìn)行排序;對應(yīng)數(shù)據(jù)原來所在位置進(jìn)行索引記錄,用于重新排序ground_truth.利用函數(shù)sort實現(xiàn),sort詳情請查看help文檔:

[pre,Index]=sort(predict); ground_truth=ground_truth(Index);

(3)對ground_truth和predict遍歷i=1:n,n是測試集數(shù)目。其目的是隨著predict中概率的增加,隨著增加判斷正負(fù)樣本的閾值;也就是說取遍歷到的predict值為閾值,大于閾值的假設(shè)預(yù)測為正樣本(閾值右邊),小于閾值的假設(shè)預(yù)測為負(fù)樣本(閾值左邊)。

所以同時我們可得到真正TP 和假正FP值:TP=sum(ground_truth(i:n)==1);FP=sum(ground_truth(i:n)==0);

這時我們就可以求取TPR 和FPR了:TPR=TP/pos_num; ?FPR=FP/neg_num; ? 把求取到的值保存起來(x(i),y(i)),因為這就是我們要在圖上畫的點。

(4)返回曲線與坐標(biāo)軸間的面積auc。我們的目的是測量數(shù)據(jù)的準(zhǔn)確率,這個面積就是一個量度,auc越大,準(zhǔn)確率越高。

auc=auc+(y(i)+y(i-1))*(x(i-1)-x(i))/2;

實現(xiàn)ROC曲線的代碼如下:

% ?predict ? ? ? - 分類器對測試集的分類結(jié)果

% ?ground_truth - 測試集的正確標(biāo)簽,這里只考慮二分類,即0和1

% ?auc ? ? ? ? ? ?- 返回ROC曲線的曲線下的面積

function auc = plot_roc( predict, ground_truth )

%初始點為(1.0, 1.0)

%計算出ground_truth中正樣本的數(shù)目pos_num和負(fù)樣本的數(shù)目neg_num

pos_num = sum(ground_truth==1);

neg_num = sum(ground_truth==0);

m=size(ground_truth,1);

[pre,Index]=sort(predict);

ground_truth=ground_truth(Index);

x=zeros(m+1,1);

y=zeros(m+1,1);

auc=0;

x(1)=1;y(1)=1;

for i=2:m

TP=sum(ground_truth(i:m)==1);FP=sum(ground_truth(i:m)==0);

x(i)=FP/neg_num;

y(i)=TP/pos_num;

auc=auc+(y(i)+y(i-1))*(x(i-1)-x(i))/2;

end;

x(m+1)=0;y(m+1)=0;

auc=auc+y(m)*x(m)/2;

plot(x,y);

end

具體實現(xiàn)結(jié)果:

總結(jié)

以上是生活随笔為你收集整理的用matlab画出M1和M2的ROC曲线,ROC曲线及其matlab实现ROC曲线的绘画的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。