4

混同行列とは何か知っています。

N個のクラスが与えられると、NxN行列Mがあります。ここで-各行はクラスの1つです-各列はクラスの1つです

M(X、Y)=クラスXに分類され、クラスYに分類されているはずの要素の数(もちろん、X = Yの場合、分類は正しいです)。

これで、「複合クラス」のセットと可変数のクラスができました。

  • 「COMPOUND」とは、1つのクラスが(可変長の)ベクトルに対応することを意味します。たとえば、クラスが2要素のベクトルで表される場合、可能なクラスは次のようになります。

    [0,0]

    [0,1]

    [1,0]

    [1,1]

Miの目標は、次の関数を定義することです。

  • 入力:分類された要素のNxM行列(N =分類された要素の数、M =各クラスの要素の数)、各要素に期待されるクラスのNxM行列。
  • 出力:入力クラスに対応するNXN混同行列

出力の例:

[1 0 0]
[0 2 0]
[0 1 0]

この行列は3x3行列です。

これは、クラスの総数が3で、分類された要素の数が4であることを意味します。

  • 1つの要素はクラス1に分類されている必要があり、クラス1に分類されています。
  • 2つの要素は、クラス2に分類され、クラス2に分類されている必要があります。
  • 1つの要素はクラス3に分類され、クラス2に分類されている必要があります。

(要素がどのように構成されているかは関係ありません。クラスが次のようになることを想像してみましょう。

[0,0,1]
[1,0,1]
[1,1,1]

**入力行列の例(EXPECTEDclasses):**

[0,0,1]
[1,0,1]
[1,0,1]
[1,1,1]

**入力マトリックスの例(OBTAINEDクラス):**

[0,0,1]
[1,0,1]
[1,0,1]
[1,0,1]   <-- this is the element(line) incorrectly classified

どうすればいいですか?(分類はパーセプトロンまたはアダリンニューロンネットワークによって行われます)

ヒントをよろしくお願いします!

4

1 に答える 1

4

重要なのは、次の形式でismember[Lia,Locb] = ismember(A,B,'rows')を使用する ことです。2番目の出力引数は、行列Aの各行が一致する行列Bの行を示します。この情報を使用して、混同行列(統計ツールボックスに組み込まれている関数)を作成します。

classes = [0 0 1;
            1 0 1; 
            1 1 1];
 expected = [0 0 1;
             1 0 1;
             1 0 1;
             1 1 1];
 obtained = [0 0 1;
             1 0 1;
             1 0 1;
             1 0 1];    
>> [~, ex] = ismember(expected, classes,'rows')    
ex =    
     1
     2
     2
     3

>> [~, ob] = ismember(obtained, classes,'rows')    
ob =

     1
     2
     2
     2

>> confusionmat(ex,ob,'order',[1 2 3])    
ans =

     1     0     0
     0     2     0
     0     1     0

にアクセスできない場合はconfusionmat、を使用accummarrayして自分で行うことができます。

num_observations = length(ex);
num_classes = size(classes,1);
accumarray([ex,ob],ones(num_observations,1),[num_classes,num_classes])
于 2012-06-26T17:32:22.300 に答える