[英]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.