2016-04-02 187 views
1

我一直在使用patternnet分類器對2個不同的類進行分類 - 標記爲0,1。我試圖用MATLAB來生成使用patternnet生成的一些數據的Roc曲線圖但我無法理解它需要運行的參數。使用perfcurve繪製神經網絡分類器的ROC曲線

[xTr, yTr, TTr, aucTr] = perfcurve(t, results.Data.y, 1); 

我假定: t是生成的標籤的矢量,我的數據所屬成類的狀態(礦由0和1,並且大小爲2x834) 分數是所謂由patternnet創建的變量' results.Data.y'(大小爲2x834) posclass爲1. 但是分數應該是一個向量(大小爲1×834),我不知道要選擇哪一行?

回答

0

有關perfcurve功能的詳細信息可在此處獲得: http://in.mathworks.com/help/stats/perfcurve.html 這些示例非常有用。

關於你提到的具體情況,T沒有預測矢量,但你自己創建的矢量標記您的測試數據,這顯然會是1xN(其中n = 834爲您的情況。)

你的分數矩陣將是m * n,其中m是數據中類的數量(對於您的情況,這是2)。 既然你說1是你的正面課堂,你會選擇包含你正面課堂成績的欄目。 類似於:

[xTr, yTr, TTr, aucTr] = perfcurve(t, results.Data.y(:,1), 1); 
plot(xTr, yTr); 
+0

謝謝。那麼,我將不勝感激,如果能解釋我的一部分下面的代碼: (http://lamda.nju.edu.cn/code_CSNN.ashx) 在LableFormatConvertion.m文件中,行50: 'prediction = ClassType (ID);'。 @ArchitTaneja – ebrahimi

+0

@ebrahimi我不確定輸入中究竟是什麼'標籤',但要回答你的問題: 當你使用max(Label)找到'id'時,你會得到Label的行索引,其中max元素出現: 例如:對於 A = [1 9 -2; 8 4 -5],id將是[2,1,1],它表示在第一列中,8是最大值,它的行索引是2. 現在你有一個元組作爲'id'。使用'id'中的值可以訪問ClassType的數組元素。 例如: 如果您的'id'爲[2,1,1],ClassType爲[0,1] 'prediction'爲[1,0,0]。即id(1)= 2獲取ClassType(2)= 1,id(2)= 1將獲取ClassType(1)= 0等等。 –

+0

謝謝。實際上,有六種算法來處理不平衡分類。例如,考慮過採樣,然後請看sample_oversampling。 m文件,所以很清楚標籤是什麼。它是測試數據的模擬輸出。我的問題是,如果我們將ClassType更改爲[1,0],那麼結果將是相反的,以及如何知道哪一個對[0,1]或[1,0]是正確的。 @ArchitTaneja – ebrahimi