ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

sortClasses

混同行列チャートのクラスの並べ替え

説明

sortClasses(cm,order) は、order で指定された順序に混同行列チャート cm のクラスを並べ替えます。クラスは、混同行列の対角線に沿った値による自然な順序、または指定した固定の順序に並べ替えられます。

すべて折りたたむ

混同行列チャートを作成し、クラス単位の真陽性率 (再現率) またはクラス単位の陽性の予測値 (精度) に従ってチャートのクラスを並べ替えます。

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' オプションを使用してクラスを並べ替えることにより類似するクラスをクラスター化します。この例では、関数pdistlinkageおよび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')

pdistlinkage および optimalleaforder の使用によるクラスター化

'cluster' オプションを使用する代わりに、関数pdistlinkageおよびoptimalleaforderを使用して混同行列の値をクラスター化できます。これらの関数のオプションを使用して、クラスター化をカスタマイズできます。詳細については、対応する関数のリファレンス ページを参照してください。

混同行列とクラス ラベルがあるとします。

m = confusionmat(trueLabels,predictedLabels);
labels = [1 2 3 4 5 6 7 8];

pdistlinkageおよび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 (pdistlinkageおよび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);

既定では、confusionchartsort によって定義される自然な順序にクラスを並べ替えます。この例では、クラス ラベルが文字ベクトルなので、confusionchart はクラスをアルファベット順に並べ替えます。混同行列チャートのクラスを固定の順序に並べ替えます。

sortClasses(cm,["versicolor","setosa","virginica"])

入力引数

すべて折りたたむ

混同行列チャート。ConfusionMatrixChart オブジェクトを指定します。混同行列チャートを作成するには、confusionchart を使用します。

混同行列チャートのクラスを並べ替える順序。以下のいずれかの値を指定します。

  • 'auto' — 関数 sort によって定義される自然な順序にクラスを並べ替えます。たとえば、混同行列チャートのクラス ラベルが string ベクトルである場合、アルファベット順に並べ替えます。クラス ラベルが順序 categorical ベクトルである場合、クラス ラベルの順序を使用します。

  • 'ascending-diagonal' — 混同行列の対角線に沿った値が左上から右下に向かって大きくなるようにクラスを並べ替えます。

  • 'descending-diagonal' — 混同行列の対角線に沿った値が左上から右下に向かって小さくなるようにクラスを並べ替えます。

  • 'cluster' — 類似するクラスをクラスター化するようにクラスを並べ替えます。関数 pdistlinkage および optimalleaforder を使用して、クラスター化をカスタマイズできます。詳細については、クラスの並べ替えによる類似するクラスのクラスター化を参照してください。

  • 配列 — categorical ベクトル、数値ベクトル、string ベクトル、文字配列、文字ベクトルの cell 配列、または logical ベクトルによって指定された一意な順序にクラスを並べ替えます。配列は、混同行列チャートの ClassLabels プロパティの置換でなければなりません。

例: sortClasses(cm,'ascending-diagonal')

例: sortClasses(cm,["owl","cat","toad"])

R2018b で導入