Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

confusionmat

分類問題の混同行列の計算

説明

C = confusionmat(group,grouphat) は、既知のグループ group および予測グループ grouphat によって決定された混同行列 C を返します。

C = confusionmat(group,grouphat,'Order',grouporder) は、grouporder を使用して C の行と列の順序を指定します。

[C,order] = confusionmat(___) は、前の構文の入力引数のいずれかを使用して、C の行と列の順序を変数 order で返します。

すべて折りたたむ

分類問題で使用する予測ラベルと真のラベルのサンプルを読み込みます。trueLabels はイメージ分類問題で使用する真のラベル、predictedLabels は畳み込みニューラル ネットワークの予測です。

load('Cifar10Labels.mat','trueLabels','predictedLabels');

数値混同行列を計算します。order は、混同行列に含まれるクラスの順序です。

[m,order] = confusionmat(trueLabels,predictedLabels)
m = 10×10

   923     4    21     8     4     1     5     5    23     6
     5   972     2     0     0     0     0     1     5    15
    26     2   892    30    13     8    17     5     4     3
    12     4    32   826    24    48    30    12     5     7
     5     1    28    24   898    13    14    14     2     1
     7     2    28   111    18   801    13    17     0     3
     5     0    16    27     3     4   943     1     1     0
     9     1    14    13    22    17     3   915     2     4
    37    10     4     4     0     1     2     1   931    10
    20    39     3     3     0     0     2     1     9   923

order = 10x1 categorical
     airplane 
     automobile 
     bird 
     cat 
     deer 
     dog 
     frog 
     horse 
     ship 
     truck 

confusionchart を使用すると、混同行列を混同行列チャートとしてプロットできます。

figure
cm = confusionchart(m,order);

Figure contains an object of type ConfusionMatrixChart.

プロットする前に混同行列を計算する必要はありません。代わりに、真のラベルと予測ラベルから混同行列チャートを直接プロットします。列と行の要約やタイトルを追加することもできます。

figure
cm = confusionchart(trueLabels,predictedLabels, ...
    'Title','My Title', ...
    'RowSummary','row-normalized', ...
    'ColumnSummary','column-normalized');

Figure contains an object of type ConfusionMatrixChart. The chart of type ConfusionMatrixChart has title My Title.

ConfusionMatrixChart オブジェクトは、NormalizedValues プロパティに数値混同行列を格納し、ClassLabels プロパティにクラスを格納します。

cm.NormalizedValues
ans = 10×10

   923     4    21     8     4     1     5     5    23     6
     5   972     2     0     0     0     0     1     5    15
    26     2   892    30    13     8    17     5     4     3
    12     4    32   826    24    48    30    12     5     7
     5     1    28    24   898    13    14    14     2     1
     7     2    28   111    18   801    13    17     0     3
     5     0    16    27     3     4   943     1     1     0
     9     1    14    13    22    17     3   915     2     4
    37    10     4     4     0     1     2     1   931    10
    20    39     3     3     0     0     2     1     9   923

cm.ClassLabels
ans = 10x1 categorical
     airplane 
     automobile 
     bird 
     cat 
     deer 
     dog 
     frog 
     horse 
     ship 
     truck 

入力引数

すべて折りたたむ

観測値を分類するための既知のグループ。数値ベクトル、logical ベクトル、文字配列、string 配列、文字ベクトルの cell 配列、または categorical ベクトルとして指定します。

group は、grouphat と同じ型のグループ化変数です。引数 group は、グループ化変数 (Statistics and Machine Learning Toolbox)で説明されているように、grouphat と同じ数の観測値をもたなければなりません。関数 confusionmat は、文字配列と string 配列を文字ベクトルの cell 配列として扱います。また、confusionmat は、group に含まれる NaN の値、空の値、および 'undefined' の値を欠損値として扱い、異なるグループまたはカテゴリとしてカウントしません。

例: {'Male','Female','Female','Male','Female'}

データ型: single | double | logical | char | string | cell | categorical

観測値を分類するための予測グループ。数値ベクトル、logical ベクトル、文字配列、string 配列、文字ベクトルの cell 配列、または categorical ベクトルとして指定します。

grouphat は、group と同じ型のグループ化変数です。引数 grouphat は、グループ化変数 (Statistics and Machine Learning Toolbox)で説明されているように、group と同じ数の観測値をもたなければなりません。関数 confusionmat は、文字配列と string 配列を文字ベクトルの cell 配列として扱います。また、confusionmat は、grouphat に含まれる NaN の値、空の値、および 'undefined' の値を欠損値として扱い、異なるグループまたはカテゴリとしてカウントしません。

例: [1 0 0 1 0]

データ型: single | double | logical | char | string | cell | categorical

グループの順序。数値ベクトル、logical ベクトル、文字配列、string 配列、文字ベクトルの cell 配列、または categorical ベクトルとして指定します。

grouporder は、group および grouphat に含まれるすべての異なる要素を含むグループ化変数です。grouporder を指定して C の行と列の順序を定義します。group または grouphat に存在しない要素が grouporder に含まれている場合、C 内の対応するエントリは 0 になります。

既定では、グループの順序は s = [group;grouphat] のデータ型に依存します。

  • 数値ベクトルと logical ベクトルの場合、この順序は s のソート順序になります。

  • categorical ベクトルの場合、この順序は categories(s) によって返された順序になります。

  • その他のデータ型の場合、s で出現した順序になります。

例: 'order',{'setosa','versicolor','virginica'}

データ型: single | double | logical | char | string | cell | categorical

出力引数

すべて折りたたむ

混同行列。引数 group および grouphat に含まれる異なる要素の総数と同じサイズの正方行列として返されます。C(i,j) は、グループ i に含まれることがわかっており、グループ j に含まれることが予測される観測値の数です。

C の行と列は、同じグループのインデックスと同じ順序で並んでいます。既定では、グループの順序は s = [group;grouphat] のデータ型に依存します。

  • 数値ベクトルと logical ベクトルの場合、この順序は s のソート順序になります。

  • categorical ベクトルの場合、この順序は categories(s) によって返された順序になります。

  • その他のデータ型の場合、s で出現した順序になります。

順序を変更するには、grouporder を指定します。

関数 confusionmat は、グループ化変数に含まれる NaN の値、空の値、および 'undefined' の値を欠損値として扱い、C の行と列にそれらを格納しません。

C の行と列の順序。数値ベクトル、logical ベクトル、categorical ベクトル、または文字ベクトルの cell 配列として返されます。group および grouphat が文字配列、string 配列、または文字ベクトルの cell 配列の場合、変数 order は文字ベクトルの cell 配列になります。そうでない場合、order は、group および grouphat と同じ型になります。

代替機能

  • confusionchart を使用し、混同行列の計算とプロットを行います。また、confusionchart は、データに関する要約統計量を表示し、クラスごとの適合率 (陽性の予測値)、クラスごとの再現率 (真陽性率)、または正しく分類された観測値の総数に基づいて混同行列のクラスを並べ替えます。