sortClasses
混同行列チャートのクラスの並べ替え
説明
例
精度または再現率によるクラスの並べ替え
混同行列チャートを作成し、クラス単位の真陽性率 (再現率) またはクラス単位の陽性の予測値 (精度) に従ってチャートのクラスを並べ替えます。
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';
クラスの並べ替えによる類似するクラスのクラスター化
関数 confusionchart
を使用して混同行列チャートを作成し、関数 sortClasses
の 'cluster'
オプションを使用してクラスを並べ替えることにより類似するクラスをクラスター化します。この例では、関数pdist
、linkage
およびoptimalleaforder
によるクラスター化の方法も示します。
8 つの異なるクラスが含まれている標本データセットを生成します。
rng('default') % For reproducibility trueLabels = randi(8,1000,1); predictedLabels = trueLabels;
最初の 200 個の標本について、クラス {1,4,7}、{2,8} および {5,6} を入れ替えます。
rename = [4 8 3 7 6 5 1 2]; predictedLabels(1:100) = rename(predictedLabels(1:100)); rename = [7 8 3 1 6 5 4 2]; predictedLabels(101:200) = rename(predictedLabels(101:200));
真のラベル trueLabels
と予測ラベル predictedLabels
から混同行列チャートを作成します。
figure cm1 = confusionchart(trueLabels,predictedLabels);
'cluster'
の使用によるクラスター化
'cluster'
オプションを使用して、クラスを並べ替えることにより類似するクラスをクラスター化します。
sortClasses(cm1,'cluster')
pdist
、linkage
および optimalleaforder
の使用によるクラスター化
'cluster'
オプションを使用する代わりに、関数pdist
、linkage
およびoptimalleaforder
を使用して混同行列の値をクラスター化できます。これらの関数のオプションを使用して、クラスター化をカスタマイズできます。詳細については、対応する関数のリファレンス ページを参照してください。
混同行列とクラス ラベルがあるとします。
m = confusionmat(trueLabels,predictedLabels); labels = [1 2 3 4 5 6 7 8];
pdist
、linkage
およびoptimalleaforder
を使用して、クラスター化された行列を計算し、対応するクラス ラベルを求めます。関数 pdist
は、混同行列の値のペア間のユークリッド距離 D
を計算します。関数 optimalleaforder
は、距離 D
を使用して、階層バイナリ クラスター ツリー linkage(D)
に対する最適なリーフの順序を返します。
D = pdist(m); idx = optimalleaforder(linkage(D),D); clusteredM = m(idx,idx); clusteredLabels = labels(idx);
クラスター化された行列および対応するクラス ラベルを使用して、混同行列チャートを作成します。次に、クラス ラベルを使用して、クラスを並べ替えます。
cm2 = confusionchart(clusteredM,clusteredLabels); sortClasses(cm2,clusteredLabels)
並べ替えた混同行列チャート cm2
(pdist
、linkage
およびoptimalleaforder
を使用して作成) は、並べ替えた混同行列チャート cm1
('cluster'
オプションを使用して作成) と同じです。
クラスを固定順序に並べ替える
混同行列チャートを作成し、チャートのクラスを固定の順序に並べ替えます。
フィッシャーのアヤメのデータセットを読み込みます。
load fisheriris
X = meas([51:150,1:50],:);
Y = species([51:150,1:50],:);
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(cm,["versicolor","setosa","virginica"])
入力引数
cm
— 混同行列チャート
ConfusionMatrixChart
オブジェクト
混同行列チャート。ConfusionMatrixChart
オブジェクトを指定します。混同行列チャートを作成するには、confusionchart
を使用します。
order
— クラスを並べ替える順序
'auto'
| 'ascending-diagonal'
| 'descending-diagonal'
| 'cluster'
| 配列
混同行列チャートのクラスを並べ替える順序。以下のいずれかの値を指定します。
'auto'
— 関数sort
によって定義される自然な順序にクラスを並べ替えます。たとえば、混同行列チャートのクラス ラベルが string ベクトルである場合、アルファベット順に並べ替えます。クラス ラベルが順序 categorical ベクトルである場合、クラス ラベルの順序を使用します。'ascending-diagonal'
— 混同行列の対角線に沿った値が左上から右下に向かって大きくなるようにクラスを並べ替えます。'descending-diagonal'
— 混同行列の対角線に沿った値が左上から右下に向かって小さくなるようにクラスを並べ替えます。'cluster'
— 類似するクラスをクラスター化するようにクラスを並べ替えます。関数pdist
、linkage
およびoptimalleaforder
を使用して、クラスター化をカスタマイズできます。詳細については、クラスの並べ替えによる類似するクラスのクラスター化を参照してください。配列 — categorical ベクトル、数値ベクトル、string ベクトル、文字配列、文字ベクトルの cell 配列、または logical ベクトルによって指定された一意な順序にクラスを並べ替えます。配列は、混同行列チャートの
ClassLabels
プロパティの置換でなければなりません。
例: sortClasses(cm,'ascending-diagonal')
例: sortClasses(cm,["owl","cat","toad"])
バージョン履歴
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)