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"])

入力引数
混同行列チャート。ConfusionMatrixChart オブジェクトとして指定します。混同行列チャートを作成するには、confusionchart を使用します。
混同行列チャートのクラスを並べ替える順序。次のいずれかの値として指定します。
'auto'— 関数sortによる定義に基づき自然順でクラスを並べ替えます。たとえば、混同行列チャートのクラス ラベルが string ベクトルである場合、アルファベット順に並べ替えます。クラス ラベルが序数の categorical ベクトルである場合、クラス ラベルの順序を使用します。'ascending-diagonal'— 混同行列の対角線上の値が左上から右下に向かって大きくなるようにクラスを並べ替えます。'descending-diagonal'— 混同行列の対角線に沿った値が左上から右下に向かって小さくなるようにクラスを並べ替えます。'cluster'— 類似するクラスをクラスター化するようにクラスを並べ替えます。関数pdist、linkageおよびoptimalleaforderを使用して、クラスター化をカスタマイズできます。詳細については、クラスの並べ替えによる類似するクラスのクラスター化を参照してください。Array — categorical ベクトル、数値ベクトル、string ベクトル、文字配列、文字ベクトルの cell 配列、または logical ベクトルとして指定された一意の順序でクラスを並べ替えます。この配列は、混同行列チャートの
ClassLabelsプロパティの順列でなければなりません。
例: sortClasses(cm,'ascending-diagonal')
例: sortClasses(cm,["owl","cat","toad"])
バージョン履歴
R2018b で導入
参考
関数
プロパティ
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)