confusionchart
分類問題用の混同行列チャートの作成
構文
説明
confusionchart(
は、真のラベル trueLabels
,predictedLabels
)trueLabels
および予測ラベル predictedLabels
から混同行列チャートを作成し、ConfusionMatrixChart
オブジェクトを返します。混同行列の行は真のクラスに、列は予測クラスに対応します。対角線上のセルは正しく分類された観測値に、対角線外のセルは誤って分類された観測値に対応します。作成後に混同行列チャートを変更するには、cm
を使用します。プロパティの一覧については、ConfusionMatrixChart のプロパティを参照してください。
confusionchart(
は、数値混同行列 m
)m
から混同行列チャートを作成します。既に数値混同行列がワークスペースにある場合は、この構文を使用します。
confusionchart(
は、x 軸と y 軸に沿って表示するクラス ラベルを指定します。既に数値混同行列とクラス ラベルがワークスペースにある場合は、この構文を使用します。m
,classLabels
)
confusionchart(
は、parent
,___)parent
で指定された Figure、パネル、またはタブに混同チャートを作成します。
confusionchart(___,
は、1 つ以上の名前と値のペアの引数を使用して Name,Value
)ConfusionMatrixChart
の追加プロパティを指定します。プロパティは、他のすべての入力引数の後で指定します。プロパティの一覧については、ConfusionMatrixChart のプロパティを参照してください。
は、cm
= confusionchart(___)ConfusionMatrixChart
オブジェクトを返します。チャートのプロパティを作成した後にこのプロパティを変更するには、cm
を使用します。プロパティの一覧については、ConfusionMatrixChart のプロパティを参照してください。
例
混同行列チャートの作成
フィッシャーのアヤメのデータセットを読み込みます。
load fisheriris
X = meas;
Y = species;
X
は、150 本のアヤメについて 4 つの花弁の測定値が含まれている数値行列です。Y
は、対応するアヤメの種類が含まれている文字ベクトルの cell 配列です。
k 最近傍 (KNN) 分類器に学習させます。ここで、予測子の最近傍の個数 (k) は 5 です。数値予測子データを標準化することをお勧めします。
Mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1);
学習データのラベルを予測します。
predictedY = resubPredict(Mdl);
真のラベル Y
と予測ラベル predictedY
から混同行列チャートを作成します。
cm = confusionchart(Y,predictedY);
混同行列では、観測値の総数が各セルに表示されます。混同行列の行は真のクラスに、列は予測クラスに対応します。対角線上のセルは正しく分類された観測値に、対角線外のセルは誤って分類された観測値に対応します。
既定では、confusionchart
は sort
によって定義される自然な順序にクラスを並べ替えます。この例では、クラス ラベルが文字ベクトルなので、confusionchart
はクラスをアルファベット順に並べ替えます。指定した順序または混同行列の値でクラスを並べ替えるには、sortClasses
を使用します。
NormalizedValues
プロパティには、混同行列の値が格納されています。ドット表記を使用して、これらの値を表示します。
cm.NormalizedValues
ans = 3×3
50 0 0
0 47 3
0 4 46
プロパティ値を変更して、混同行列チャートの外観と動作を変更します。タイトルを追加します。
cm.Title = 'Iris Flower Classification Using KNN';
列と行の要約を追加します。
cm.RowSummary = 'row-normalized'; cm.ColumnSummary = 'column-normalized';
行正規化による行要約では、真のクラスのそれぞれについて、正しく分類された観測値と誤って分類された観測値の割合が表示されます。列正規化による列要約では、各予測クラスについて、正しく分類された観測値と誤って分類された観測値の割合が表示されます。
精度または再現率によるクラスの並べ替え
混同行列チャートを作成し、クラス単位の真陽性率 (再現率) またはクラス単位の陽性の予測値 (精度) に従ってチャートのクラスを並べ替えます。
arrhythmia
データセットを読み込み検証します。
load arrhythmia
isLabels = unique(Y);
nLabels = numel(isLabels)
nLabels = 13
tabulate(categorical(Y))
Value Count Percent 1 245 54.20% 2 44 9.73% 3 15 3.32% 4 15 3.32% 5 13 2.88% 6 25 5.53% 7 3 0.66% 8 2 0.44% 9 9 1.99% 10 50 11.06% 14 4 0.88% 15 5 1.11% 16 22 4.87%
不整脈のさまざまな段階を表す 16 個の異なるラベルがデータに含まれていますが、応答 (Y
) には 13 個の異なるラベルのみが含まれています。
分類木に学習をさせ、木の再代入応答を予測します。
Mdl = fitctree(X,Y); predictedY = resubPredict(Mdl);
真のラベル Y
と予測ラベル predictedY
から混同行列チャートを作成します。真陽性率と偽陽性率を行要約に表示するため、'RowSummary'
として 'row-normalized'
を指定します。また、陽性の予測値と偽発見率を列要約に表示するため、'ColumnSummary'
として 'column-normalized'
を指定します。
fig = figure; cm = confusionchart(Y,predictedY,'RowSummary','row-normalized','ColumnSummary','column-normalized');
混同チャートのコンテナーのサイズを変更して、パーセントが行要約に表示されるようにします。
fig_Position = fig.Position; fig_Position(3) = fig_Position(3)*1.5; fig.Position = fig_Position;
真陽性率に従って混同行列を並べ替えるため、Normalization
プロパティを 'row-normalized'
に設定することにより各行でセルの値を正規化してから、sortClasses
を使用します。並べ替えた後で、観測値の総数を各セルに表示するため、Normalization
プロパティを 'absolute'
にリセットします。
cm.Normalization = 'row-normalized'; sortClasses(cm,'descending-diagonal') cm.Normalization = 'absolute';
陽性の予測値に従って混同行列を並べ替えるため、Normalization
プロパティを 'column-normalized'
に設定することにより各列でセルの値を正規化してから、sortClasses
を使用します。並べ替えた後で、観測値の総数を各セルに表示するため、Normalization
プロパティを 'absolute'
にリセットします。
cm.Normalization = 'column-normalized'; sortClasses(cm,'descending-diagonal') cm.Normalization = 'absolute';
tall 配列を使用した分類用の混同行列
フィッシャーのアヤメのデータセットの tall 配列に対して分類を実行します。関数 confusionchart
を使用して、既知の tall ラベルと予測した tall ラベルに対する混同行列チャートを計算します。
tall 配列に対する計算を実行する場合、MATLAB® は並列プール (Parallel Computing Toolbox™ がある場合は既定) またはローカルの MATLAB セッションを使用します。Parallel Computing Toolbox がある場合にローカルの MATLAB セッションを使用して例を実行するには、関数 mapreducer
を使用してグローバルな実行環境を変更します。
mapreducer(0)
フィッシャーのアヤメのデータセットを読み込みます。
load fisheriris
インメモリ配列 meas
および species
を tall 配列に変換します。
tx = tall(meas); ty = tall(species);
tall 配列内の観測値の個数を求めます。
numObs = gather(length(ty)); % gather collects tall array into memory
再現性を得るために rng
と tallrng
を使用して乱数発生器のシードを設定し、学習標本を無作為に選択します。tall 配列の場合、ワーカーの個数と実行環境によって結果が異なる可能性があります。詳細については、コードの実行場所の制御を参照してください。
rng('default') tallrng('default') numTrain = floor(numObs/2); [txTrain,trIdx] = datasample(tx,numTrain,'Replace',false); tyTrain = ty(trIdx);
決定木分類器モデルを学習標本に当てはめます。
mdl = fitctree(txTrain,tyTrain);
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 2: Completed in 1 sec - Pass 2 of 2: Completed in 0.98 sec Evaluation completed in 2.9 sec Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 4: Completed in 0.48 sec - Pass 2 of 4: Completed in 0.47 sec - Pass 3 of 4: Completed in 0.55 sec - Pass 4 of 4: Completed in 0.63 sec Evaluation completed in 2.6 sec Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 4: Completed in 0.17 sec - Pass 2 of 4: Completed in 0.2 sec - Pass 3 of 4: Completed in 0.25 sec - Pass 4 of 4: Completed in 0.36 sec Evaluation completed in 1.5 sec Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 4: Completed in 0.23 sec - Pass 2 of 4: Completed in 0.24 sec - Pass 3 of 4: Completed in 0.54 sec - Pass 4 of 4: Completed in 0.73 sec Evaluation completed in 2.2 sec Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 4: Completed in 0.28 sec - Pass 2 of 4: Completed in 0.24 sec - Pass 3 of 4: Completed in 0.28 sec - Pass 4 of 4: Completed in 0.27 sec Evaluation completed in 1.4 sec
学習済みのモデルを使用して、テスト標本のラベルを予測します。
txTest = tx(~trIdx,:); label = predict(mdl,txTest);
生成された分類について混同行列チャートを作成します。
tyTest = ty(~trIdx); cm = confusionchart(tyTest,label)
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 0.077 sec Evaluation completed in 0.28 sec Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 0.36 sec Evaluation completed in 0.59 sec
cm = ConfusionMatrixChart with properties: NormalizedValues: [3x3 double] ClassLabels: {3x1 cell} Use GET to show all properties
この混同行列チャートは、versicolor クラスの測定値の 3 つが誤分類されたことを示しています。setosa および virginica に属している測定は、すべて正しく分類されています。
入力引数
trueLabels
— 分類問題の真のラベル
categorical ベクトル | 数値ベクトル | string ベクトル | 文字配列 | 文字ベクトルの cell 配列 | logical ベクトル
分類問題の真のラベル。categorical ベクトル、数値ベクトル、string ベクトル、文字配列、文字ベクトルの cell 配列、または logical ベクトルを指定します。trueLabels
がベクトルである場合、各要素は 1 つの観測値に対応します。trueLabels
が文字配列である場合、各行が 1 つの観測値のラベルに対応する 2 次元配列でなければなりません。
predictedLabels
— 分類問題の予測ラベル
categorical ベクトル | 数値ベクトル | string ベクトル | 文字配列 | 文字ベクトルの cell 配列 | logical ベクトル
分類問題の予測ラベル。categorical ベクトル、数値ベクトル、string ベクトル、文字配列、文字ベクトルの cell 配列、または logical ベクトルを指定します。predictedLabels
がベクトルである場合、各要素は 1 つの観測値に対応します。predictedLabels
が文字配列である場合、各行が 1 つの観測値のラベルに対応する 2 次元配列でなければなりません。
m
— 混同行列
行列
混同行列。行列を指定します。m
は正方行列でなければならず、その要素は正の整数でなければなりません。要素 m(i,j)
は、i
番目の真のクラスに属する観測値が j
番目のクラスのものであると予測された回数です。混同行列チャートの色付きの各セルは、混同行列 m
の 1 つの要素に対応します。
classLabels
— クラス ラベル
categorical ベクトル | 数値ベクトル | string ベクトル | 文字配列 | 文字ベクトルの cell 配列 | logical ベクトル
混同行列チャートのクラス ラベル。categorical ベクトル、数値ベクトル、string ベクトル、文字配列、文字ベクトルの cell 配列、または logical ベクトルを指定します。classLabels
がベクトルである場合、要素数は混同行列の行数および列数と同じでなければなりません。classLabels
が文字配列である場合、各行が 1 つのクラスのラベルに対応する 2 次元配列でなければなりません。
parent
— 親コンテナー
Figure
オブジェクト | Panel
オブジェクト | Tab
オブジェクト | TiledChartLayout
オブジェクト | GridLayout
オブジェクト
親コンテナー。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 のプロパティ を参照してください。
Title
— タイトル
''
(既定値) | 文字ベクトル | string スカラー
混同行列チャートのタイトル。文字ベクトルまたは string スカラーを指定します。
例: cm = confusionchart(__,'Title','My Title Text')
例: cm.Title = 'My Title Text'
ColumnSummary
— 列の要約
'off'
(既定値) | 'absolute'
| 'column-normalized'
| 'total-normalized'
混同行列チャートの列の要約。以下のいずれかを指定します。
オプション | 説明 |
---|---|
'off' | 列の要約を表示しません。 |
'absolute' | 各予測クラスについて、正しく分類された観測値と誤って分類された観測値の総数を表示します。 |
'column-normalized' | 各予測クラスについて、正しく分類された観測値と誤って分類された観測値の個数を、対応する予測クラスの観測値数に対する割合で表示します。正しく分類された観測値の割合は、クラス単位の精度 (または陽性の予測値) であると考えることができます。 |
'total-normalized' | 各予測クラスについて、正しく分類された観測値と誤って分類された観測値の個数を、観測値の総数に対する割合で表示します。 |
例: cm = confusionchart(__,'ColumnSummary','column-normalized')
例: cm.ColumnSummary = 'column-normalized'
RowSummary
— 行の要約
'off'
(既定値) | 'absolute'
| 'row-normalized'
| 'total-normalized'
混同行列チャートの行の要約。次のいずれかを指定します。
オプション | 説明 |
---|---|
'off' | 行の要約を表示しません。 |
'absolute' | 真のクラスのそれぞれについて、正しく分類された観測値と誤って分類された観測値の総数を表示します。 |
'row-normalized' | 真のクラスのそれぞれについて、正しく分類された観測値と誤って分類された観測値の個数を、対応する予測クラスの観測値数に対する割合で表示します。正しく分類された観測値の割合は、クラス単位の再現率 (つまり真陽性率) であると考えることができます。 |
'total-normalized' | 真のクラスのそれぞれについて、正しく分類された観測値と誤って分類された観測値の個数を、観測値の総数に対する割合で表示します。 |
例: cm = confusionchart(__,'RowSummary','row-normalized')
例: cm.RowSummary = 'row-normalized'
Normalization
— セルの値の正規化
'absolute'
(既定値) | 'column-normalized'
| 'row-normalized'
| 'total-normalized'
セルの値の正規化。次のいずれかを指定します。
オプション | 説明 |
---|---|
'absolute' | 観測値の総数を各セルに表示します。 |
'column-normalized' | 予測クラスが同じである観測値の個数によって各セルの値を正規化します。 |
'row-normalized' | 真のクラスが同じである観測値の個数によって各セルの値を正規化します。 |
'total-normalized' | 観測値の総数によって各セルの値を正規化します。 |
セルの値の正規化を変更すると、セルの色も変更されます。
例: cm = confusionchart(__,'Normalization','total-normalized')
例: cm.Normalization = 'total-normalized'
出力引数
cm
— 混同行列チャート オブジェクト
ConfusionMatrixChart
オブジェクト
ConfusionMatrixChart
オブジェクト。スタンドアロンの可視化です。cm
を使用して、混同行列チャートの作成後にそのプロパティを設定します。
制限
ConfusionMatrixChart
オブジェクトでは MATLAB® コードの生成はサポートされていません。
詳細
スタンドアロンの可視化
スタンドアロンの可視化は、他のグラフから独立して機能する特別な目的のために設計されたチャートです。plot
、surf
などの他のチャートとは異なり、スタンドアロンの可視化には事前設定された組み込みの axes オブジェクトがあり、利用できないカスタマイズ項目があります。スタンドアロンの可視化には、次の特性もあります。
ライン、パッチ、表面などの他のグラフィックス要素と組み合わせることができません。したがって、
hold
コマンドはサポートされていません。関数
gca
は、現在の軸座標としてチャート オブジェクトを返すことができます。入力引数として axes オブジェクトを受け入れる多くの MATLAB 関数に、チャート オブジェクトを渡すことができます。たとえば、関数
title
にチャート オブジェクトを渡すことができます。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は、tall 配列を完全にサポートします。詳細は、tall 配列を参照してください。
バージョン履歴
R2018b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)