メインコンテンツ

plotconfusion

(削除予定) 分類の混同行列のプロット

plotconfusion は将来のリリースで削除される予定です。詳細については、Transition Legacy Neural Network Code to dlnetwork Workflowsを参照してください。

コードの更新に関するアドバイスについては、バージョン履歴を参照してください。

説明

plotconfusion(targets,outputs) は、真のラベル targets および予測ラベル outputs の混同行列をプロットします。ラベルは、categorical ベクトルまたは one-of-N (one-hot) 表現で指定します。

ヒント

plotconfusion は、カテゴリカル ラベルでは推奨されません。代わりに confusionchart を使用してください。

混同行列プロットでは、行は予測されたクラス (出力クラス) に対応し、列は真のクラス (ターゲット クラス) に対応します。対角線上のセルは、正しく分類された観測値に対応します。対角線外のセルは、誤分類された観測値に対応します。観測値の数と観測値の総数に対する割合の両方が各セルに表示されます。

プロットの右端の列は、各クラスに属していると予測されたすべての例について正しく分類された例と誤分類された例の割合を示します。これらのメトリクスは通常、それぞれ精度 (または陽性の予測値) および偽発見率と呼ばれます。プロットの下部の行は、各クラスに属しているすべての例について正しく分類された例と誤分類された例の割合を示します。これらのメトリクスは通常、それぞれ再現率 (または真陽性率) および偽陰性率と呼ばれます。プロットの右下のセルは、全体の精度を示します。

plotconfusion(targets,outputs,name) は混同行列をプロットし、プロットのタイトルの先頭に name を追加します。

plotconfusion(targets1,outputs1,name1,targets2,outputs2,name2,...,targetsn,outputsn,namen) は、1 つの Figure に複数の混同行列をプロットし、対応するプロットのタイトルの先頭に引数 name を追加します。

すべて折りたたむ

手書き数字の合成イメージで構成されているデータを読み込みます。XTrain はイメージから成る 28×28×1×5000 の配列で、labelsTrain はイメージ ラベルを含む categorical ベクトルです。

load DigitsDataTrain
classNames = categories(labelsTrain);

畳み込みニューラル ネットワークのアーキテクチャを定義します。

layers = [
    imageInputLayer([28 28 1])
    
    convolution2dLayer(3,8,'Padding','same')
    batchNormalizationLayer
    reluLayer    
    convolution2dLayer(3,16,'Padding','same','Stride',2)
    batchNormalizationLayer
    reluLayer
    convolution2dLayer(3,32,'Padding','same','Stride',2)
    batchNormalizationLayer
    reluLayer
    
    fullyConnectedLayer(10)
    softmaxLayer];

学習オプションを指定し、ネットワークに学習させます。

options = trainingOptions('sgdm', ...
    'MaxEpochs',5, ...
    'Verbose',false, ...
    'Plots','training-progress', ...
    'Metrics','accuracy');
net = trainnet(XTrain,labelsTrain,layers,"crossentropy",options);

テスト データを読み込み、学習済みネットワークを使用して分類します。

load DigitsDataTest
scores = minibatchpredict(net,XTest);
YTest = scores2label(scores,classNames);

テスト ラベルと予測ラベルの混同行列をプロットします。

plotconfusion(labelsTest,YTest)

行は予測されたクラス (出力クラス) に対応し、列は真のクラス (ターゲット クラス) に対応します。対角線上のセルは、正しく分類された観測値に対応します。対角線外のセルは、誤分類された観測値に対応します。観測値の数と観測値の総数に対する割合の両方が各セルに表示されます。

プロットの右端の列は、各クラスに属していると予測されたすべての例について正しく分類された例と誤分類された例の割合を示します。これらのメトリクスは通常、それぞれ精度 (または陽性の予測値) および偽発見率と呼ばれます。プロットの下部の行は、各クラスに属しているすべての例について正しく分類された例と誤分類された例の割合を示します。これらのメトリクスは通常、それぞれ再現率 (または真陽性率) および偽陰性率と呼ばれます。プロットの右下のセルは、全体の精度を示します。

すべての Figure を閉じます。

close(findall(groot,'Type','figure'))

入力引数

すべて折りたたむ

真のクラス ラベル。次のいずれかに指定します。

  • categorical ベクトル。各要素は 1 つの観測値のクラス ラベルです。引数 outputstargets の要素数は同じでなければなりません。categorical ベクトルが、基になるクラスを定義している場合、基になるクラスの一部に観測値がない場合でも、plotconfusion は、基になるクラスをすべて表示します。引数が順序 categorical ベクトルである場合、両方の引数が同じ基になるカテゴリを同じ順序で定義していなければなりません。

  • NM 列の行列。N はクラスの数、M は観測値の数です。行列の各列は one-of-N (one-hot) 表現でなければなりません。ここで、1 である 1 つの要素は真のラベルを示し、他のすべての要素は 0 です。

予測クラス ラベル。次のいずれかに指定します。

  • categorical ベクトル。各要素は 1 つの観測値のクラス ラベルです。引数 outputstargets の要素数は同じでなければなりません。categorical ベクトルが、基になるクラスを定義している場合、基になるクラスの一部に観測値がない場合でも、plotconfusion は、基になるクラスをすべて表示します。引数が順序 categorical ベクトルである場合、両方の引数が同じ基になるカテゴリを同じ順序で定義していなければなりません。

  • NM 列の行列。N はクラスの数、M は観測値の数です。行列の各列は one-of-N (one-hot) 表現にできます。これは、1 である 1 つの要素が予測ラベルを示す、つまり、合計が 1 になる確率の形式です。

混同行列の名前。文字配列として指定します。plotconfusion は、指定された name をプロットのタイトルの先頭に追加します。

データ型: char

バージョン履歴

R2008a で導入

すべて展開する