簡體   English   中英

在二進制分類中繪制ROC曲線會返回“在真實類標簽的數組中發現少於兩個類”的錯誤,在MATLAB R2015a中

[英]Plotting ROC curve in binary classification returns “less than two classes are found in the array of true class labels” error in MATLAB R2015a

我想循環計算接收器工作特性曲線下的面積。 我的循環使用某種交叉驗證。 在某些迭代中,我的代碼突然停止,並針對perfcurve函數返回此錯誤:

Less than two classes are found in the array of true class labels.

當我檢查曲線的輸入時,例如:

labels=

     1     1     1     1     1     1     1     1     1     1     1     1     


scores=

     1     0     0     1     1     0     1     0     0     0     1     1   

我正在使用的功能是labels(labels,scores,'1') 如您所知,要計算ROC,我們需要“真陽性率”和“假陽性率”。 在上面的示例中,我們有這兩個值! 為什么此功能無法計算ROC?

由於沒有“誤報率”,因此無法計算AUC。 真陽性(TP)和假陽性(FP)的定義:

TP: 1s which are (correctly) 1s.
FP: 0s which are (incorrectly) 1s.

基本上,如果您的標簽全為0或1,那么您將不會同時獲得TP和FP。

你確定嗎? 您是否在使用提到的功能“標簽”? :)

perfcurve:

[X,Y] = perfcurve(labels,scores,posclass)為給定真實類標簽,標簽的分類器預測分數矢量計算ROC曲線。

標簽可以是數字向量,邏輯向量,字符矩陣,字符串的單元格數組或分類向量。

分數是分類器針對某些數據返回的分數的數值向量。

posclass是正類標簽(標量),可以是數字(對於數字標簽),邏輯(對於邏輯標簽)或char。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM