Main Content

confusionchart

分類問題用の混同行列チャートの作成

説明

confusionchart(trueLabels,predictedLabels) は、真のラベル trueLabels および予測ラベル predictedLabels から混同行列チャートを作成し、ConfusionMatrixChart オブジェクトを返します。混同行列の行は真のクラスに対応し、列は予測クラスに対応します。対角線および対角線外のセルは、それぞれ正しく分類された観測値および誤分類された観測値に対応します。作成した混同行列チャートを変更するには、cm を使用します。プロパティの一覧については、ConfusionMatrixChart Properties を参照してください。

confusionchart(m) は、数値混同行列 m から混同行列チャートを作成します。ワークスペースに数値混同行列が既に存在する場合は、この構文を使用します。

confusionchart(m,classLabels) は、"x" 軸と "y" 軸に表示されるクラス ラベルを指定します。ワークスペースに数値混同行列とクラス ラベルが既に存在する場合は、この構文を使用します。

confusionchart(parent,___) は、parent で指定された Figure、パネル、またはタブに混同チャートを作成します。

confusionchart(___,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して、追加の ConfusionMatrixChart プロパティを指定します。プロパティは、他のすべての入力引数の後で指定します。プロパティの一覧については、ConfusionMatrixChart Properties を参照してください。

cm = confusionchart(___) は、ConfusionMatrixChart オブジェクトを返します。作成したチャートのプロパティを変更するには、cm を使用します。プロパティの一覧については、ConfusionMatrixChart Properties を参照してください。

すべて折りたたむ

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

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

混同行列チャートを作成します。

figure
cm = confusionchart(trueLabels,predictedLabels);

プロパティの値を変更し、混同行列チャートの外観と動作を変更します。列と行の要約およびタイトルを追加します。列が正規化された列の要約には、予測クラスごとに、正しく分類された観測値と誤分類された観測値の数が、対応する予測クラスの観測値の数に対する割合として表示されます。行が正規化された行の要約には、真のクラスごとに、正しく分類された観測値と誤分類された観測値の数が、対応する真のクラスの観測値の数に対する割合として表示されます。

cm.ColumnSummary = 'column-normalized';
cm.RowSummary = 'row-normalized';
cm.Title = 'CIFAR-10 Confusion Matrix';

confusionchart を使用すると、数値混同行列から混同行列チャートを作成できます。

サンプル混同行列 m および関連するクラス ラベル classLabels を読み込みます。

load('Cifar10ConfusionMat.mat','m','classLabels');
m
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

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

数値混同行列とクラス ラベルから混同行列チャートを作成します。

cm = confusionchart(m,classLabels);

分類問題で使用する予測ラベルと真のラベルのサンプルを読み込みます。trueLabels はイメージ分類問題で使用する真のラベル、predictedLabels は畳み込みニューラル ネットワークの予測です。列と行の要約が示された混同行列チャートを作成します。

load('Cifar10Labels.mat','trueLabels','predictedLabels');
figure
cm = confusionchart(trueLabels,predictedLabels, ...
    'ColumnSummary','column-normalized', ...
    'RowSummary','row-normalized');

クラスごとの再現率 (真陽性率) に基づいて混同行列のクラスを並べ替えるには、セルの値を行単位で (真のクラスが同じである観測値の数に基づいて) 正規化します。対応する対角セルの値に基づいてクラスを並べ替え、セルの値の正規化をリセットします。これにより、行の要約に含まれる青いセルで示された割合が右に向かって減少するようにクラスが並べ替えられます。

cm.Normalization = 'row-normalized';
sortClasses(cm,'descending-diagonal');
cm.Normalization = 'absolute';

クラスごとの適合率 (陽性の予測値) に基づいてクラスを並べ替えるには、セルの値を列単位で (予測クラスが同じである観測値の数に基づいて) 正規化します。対応する対角セルの値に基づいてクラスを並べ替え、セルの値の正規化をリセットします。これにより、列の要約に含まれる青いセルで示された割合が下に向かって減少するようにクラスが並べ替えられます。

cm.Normalization = 'column-normalized';
sortClasses(cm,'descending-diagonal');
cm.Normalization = 'absolute';

入力引数

すべて折りたたむ

分類問題の真のラベル。categorical ベクトル、数値ベクトル、string ベクトル、文字配列、文字ベクトルの cell 配列、または logical ベクトルとして指定します。trueLabels がベクトルの場合、各要素は 1 つの観測値に対応します。trueLabels が文字配列の場合、各行が 1 つの観測値のラベルに対応した 2 次元配列でなければなりません。

分類問題の予測ラベル。categorical ベクトル、数値ベクトル、string ベクトル、文字配列、文字ベクトルの cell 配列、または logical ベクトルとして指定します。predictedLabels がベクトルの場合、各要素は 1 つの観測値に対応します。predictedLabels が文字配列の場合、各行が 1 つの観測値のラベルに対応した 2 次元配列でなければなりません。

混同行列。行列として指定します。m は、正の整数を要素にもつ正方行列でなければなりません。要素 m(i,j) は、真のクラスが i 番目である観測値が j 番目のクラスとして予測された回数です。混同行列チャートに含まれる色付きの各セルは、混同行列 m の 1 つの要素に対応しています。

混同行列チャートのクラス ラベル。categorical ベクトル、数値ベクトル、string ベクトル、文字配列、文字ベクトルの cell 配列、または logical ベクトルとして指定します。classLabels がベクトルの場合、混同行列に含まれる行および列と同じ数の要素がなければなりません。classLabels が文字配列の場合、各行が 1 つのクラスのラベルに対応した 2 次元配列でなければなりません。

親コンテナー。Figure オブジェクト、Panel オブジェクト、Tab オブジェクト、TiledChartLayout オブジェクト、または GridLayout オブジェクトとして指定します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: cm = confusionchart(trueLabels,predictedLabels,'Title','My Title Text','ColumnSummary','column-normalized')

メモ

ここには一部のプロパティのみを示します。一覧については、ConfusionMatrixChart Properties を参照してください。

混同行列チャートのタイトル。文字ベクトルまたは string スカラーとして指定します。

例: cm = confusionchart(__,'Title','My Title Text')

例: cm.Title = 'My Title Text'

混同行列の列の要約。次のいずれかとして指定します。

オプション説明
'off'列の要約を表示しません。
'absolute'予測クラスごとに、正しく分類された観測値と誤分類された観測値の総数を表示します。
'column-normalized'予測クラスごとに、正しく分類された観測値と誤分類された観測値の数を、対応する予測クラスの観測値の数に対する割合として表示します。正しく分類された観測値の割合は、クラスごとの適合率 (陽性の予測値) と考えることができます。
'total-normalized'予測クラスごとに、正しく分類された観測値と誤分類された観測値の数を、観測値の総数に対する割合として表示します。

例: cm = confusionchart(__,'ColumnSummary','column-normalized')

例: cm.ColumnSummary = 'column-normalized'

混同行列の行の要約。次のいずれかとして指定します。

オプション説明
'off'行の要約を表示しません。
'absolute'真のクラスごとに、正しく分類された観測値と誤分類された観測値の総数を表示します。
'row-normalized'真のクラスごとに、正しく分類された観測値と誤分類された観測値の数を、対応する真のクラスの観測値の数に対する割合として表示します。正しく分類された観測値の割合は、クラスごとの再現率 (または真陽性率) と考えることができます。
'total-normalized'真のクラスごとに、正しく分類された観測値と誤分類された観測値の数を、観測値の総数に対する割合として表示します。

例: cm = confusionchart(__,'RowSummary','row-normalized')

例: cm.RowSummary = 'row-normalized'

セル値の正規化。次のいずれかとして指定します。

オプション説明
'absolute'各セルに含まれる観測値の総数を表示します。
'column-normalized'予測クラスが同じである観測値の数に基づき、各セルの値を正規化します。
'row-normalized'真のクラスが同じである観測値の数に基づき、各セルの値を正規化します。
'total-normalized'観測値の総数に基づき、各セルの値を正規化します。

セル値の正規化を変更すると、セルの色も変わります。

例: cm = confusionchart(__,'Normalization','total-normalized')

例: cm.Normalization = 'total-normalized'

出力引数

すべて折りたたむ

スタンドアロンの可視化である、ConfusionMatrixChart オブジェクト。作成した混同行列チャートのプロパティを設定するには、cm を使用します。

制限

  • ConfusionMatrixChart オブジェクトでは、MATLAB® コード生成がサポートされていません。

詳細

すべて折りたたむ

スタンドアロンの可視化

スタンドアロンの可視化は、特定の目的のために設計され、他のチャートとは独立して機能するチャートです。スタンドアロンの可視化は、plotsurf といった他のチャートとは異なり、あらかじめ設定された axes オブジェクトが組み込まれていて、カスタマイズできる項目が限られています。また、スタンドアロンの可視化には以下の特徴があります。

  • ライン、パッチ、表面といった他のグラフィックス要素と組み合わせることはできません。そのため、hold コマンドはサポートされていません。

  • 関数 gca は、現在の座標軸としてチャート オブジェクトを返すことができます。

  • 入力引数として axes オブジェクトを受け入れる多くの MATLAB 関数にチャート オブジェクトを渡すことができます。たとえば、関数 title にチャート オブジェクトを渡すことができます。

ヒント

  • one-hot (one-of-N) データがある場合は、onehotdecode を使用し、そのデータを confusionchart で使用できるように準備します。たとえば、真のラベルが targets、予測ラベルが outputs で、観測値が列に格納されているとします。混同行列チャートは以下を使用して作成できます。

    numClasses = size(targets,1);
    trueLabels = onehotdecode(targets,1:numClasses,1);
    predictedLabels = onehotdecode(outputs,1:numClasses,1);
    confusionchart(trueLabels,predictedLabels)

  • Statistics and Machine Learning Toolbox™ がある場合は、tall 配列について混同行列チャートを作成できます。詳細については、confusionchart (Statistics and Machine Learning Toolbox) およびtall 配列を使用した分類用の混同行列 (Statistics and Machine Learning Toolbox)を参照してください。

バージョン履歴

R2018b で導入