2016-04-02 11 views
1

patternnet分類器を使用して、0,1とラベル付けされた2つの異なるクラスを分類しています。パターンネットを使用して生成されたデータのためにMATLABを使用して、私は実行する必要があるパラメータを理解するのに苦労しています。plot perfcurveを使用したニューラルネットワーク分類器のROC曲線

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

Iは仮定する: Tラベルのベクトルが自分のデータが属するクラスに状態が(私は0と1で構成され、サイズは2x834である) スコア」と呼ばれるpatternnetにより作成された変数であること生成されresults.Data.y '(2x834サイズ) posclassは1です。 しかし、スコアはベクター(1x834サイズ)でなければならず、どの行を選択するのか分かりません。

答えて

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

ありがとうございます。 「予測=のClassType:LableFormatConvertion.mファイル、ライン50で (http://lamda.nju.edu.cn/code_CSNN.ashx) :私は次のコードの一部を説明することができればその後、私は感謝します(id); ' @ArchitTaneja – ebrahimi

+0

@ebrahimi入力に正確に何が入っているのか分かりませんが、あなたの質問に答えてください: max(Label)を使って 'id'を見つけると、Labelの行インデックスが得られます。 : 例: の場合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

ありがとうございます。事実、不均衡な分類に対処する6つのアルゴリズムがあります。たとえば、オーバーサンプリングを考えてから、sample_oversamplingを見てください。 mファイルであるため、どのラベルが正しいかはわかります。テストデータのシミュレーション出力です。私の問題は、ClassTypeを[1,0]に変更すると、その結果が逆であり、[0、1]または[1、0]を実行するのが正しいことがわかっているということです。 @ArchitTaneja – ebrahimi