exponenta event banner

sortClasses

Сортировать классы матричной диаграммы путаницы

Описание

пример

sortClasses(cm,order) сортирует классы матричной диаграммы путаницы cm в порядке, указанном order. Классы можно отсортировать в их натуральном порядке, по значениям по диагонали матрицы путаницы или в заданном фиксированном порядке.

Примеры

свернуть все

Создайте матричную диаграмму путаницы и сортируйте классы диаграммы в соответствии с классовой истинной положительной скоростью (отзыв) или классовой положительной прогностической величиной (точность).

Загрузить и осмотреть 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;

Figure contains an object of type ConfusionMatrixChart.

Чтобы отсортировать матрицу путаницы в соответствии с истинной положительной скоростью, нормализуйте значения ячеек в каждой строке, установив значение Normalization свойство для 'row-normalized' а затем использовать sortClasses. После сортировки сбросьте Normalization свойство возвращается к 'absolute' для отображения общего количества наблюдений в каждой ячейке.

cm.Normalization = 'row-normalized'; 
sortClasses(cm,'descending-diagonal')
cm.Normalization = 'absolute'; 

Figure contains an object of type ConfusionMatrixChart.

Чтобы отсортировать матрицу путаницы по положительному прогностическому значению, нормализуйте значения ячеек в каждом столбце, установив значение Normalization свойство для 'column-normalized' а затем использовать sortClasses. После сортировки сбросьте Normalization свойство возвращается к 'absolute' для отображения общего количества наблюдений в каждой ячейке.

cm.Normalization = 'column-normalized';
sortClasses(cm,'descending-diagonal')
cm.Normalization = 'absolute';  

Figure contains an object of type ConfusionMatrixChart.

Создание матричной диаграммы путаницы с помощью confusionchart и сортировать классы по кластеру аналогичных классов с помощью 'cluster' вариант sortClasses функция. В этом примере также показано, как выполнять кластеризацию с помощью pdist, linkage, и optimalleaforder функции.

Создайте образец набора данных, который содержит восемь различных классов.

rng('default') % For reproducibility 
trueLabels = randi(8,1000,1);
predictedLabels = trueLabels;

Добавить путаницу между классами {1,4,7}, {2,8} и {5,6} для первых 200 образцов.

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);

Figure contains an object of type ConfusionMatrixChart.

Кластер с использованием 'cluster'

Сортировать классы по кластеру аналогичных классов с помощью 'cluster' вариант.

sortClasses(cm1,'cluster')

Figure contains an object of type ConfusionMatrixChart.

Кластер с использованием 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 функция возвращает оптимальный порядок листьев для иерархического двоичного дерева кластера linkage(D) используя расстояние D.

D = pdist(m);
idx = optimalleaforder(linkage(D),D);
clusteredM = m(idx,idx);
clusteredLabels = labels(idx);

Создайте матричную диаграмму путаницы, используя кластеризованную матрицу и соответствующие метки классов. Затем сортируйте классы с помощью меток классов.

cm2 = confusionchart(clusteredM,clusteredLabels);
sortClasses(cm2,clusteredLabels)

Figure contains an object of type ConfusionMatrixChart.

Сортированная матричная диаграмма путаницы cm2, который был создан с помощью pdist, linkage, и optimalleaforder, идентичен отсортированной матричной таблице путаницы cm1, который был создан с помощью 'cluster' вариант.

Создайте матричную диаграмму путаницы и отсортируйте классы диаграммы в фиксированном порядке.

Загрузите набор данных радужки Фишера.

load fisheriris
X = meas([51:150,1:50],:);
Y = species([51:150,1:50],:);

X - числовая матрица, содержащая четыре измерения лепестка для 150 ирисов. Y - клеточный массив символьных векторов, который содержит соответствующие виды радужки.

Обучить классификатор k-ближайших соседей (KNN), где число ближайших соседей в предикторах (k) равно 5. Хорошей практикой является стандартизация данных числового предиктора.

Mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1);

Спрогнозировать метки данных обучения.

predictedY = resubPredict(Mdl);

Создание матричной диаграммы путаницы из истинных меток Y и прогнозируемые метки predictedY.

cm = confusionchart(Y,predictedY);

Figure contains an object of type ConfusionMatrixChart.

По умолчанию confusionchart сортирует классы в их естественный порядок, как определено sort. В этом примере метки класса являются символьными векторами, поэтому confusionchart сортировка классов по алфавиту. Изменение порядка классов матричной диаграммы путаницы в фиксированном порядке.

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

Figure contains an object of type ConfusionMatrixChart.

Входные аргументы

свернуть все

Матричная диаграмма путаницы, указанная как ConfusionMatrixChart объект. Чтобы создать матричную диаграмму путаницы, используйте confusionchart,

Порядок сортировки классов матричной диаграммы путаницы, указанный как одно из следующих значений:

  • 'auto' - Сортирует классы в их естественный порядок, как определено sort функция. Например, если метки классов матричной диаграммы путаницы являются строковым вектором, то сортировка выполняется в алфавитном порядке. Если метки класса являются порядковым категориальным вектором, используйте порядок меток класса.

  • 'ascending-diagonal' - Сортировать классы так, чтобы значения по диагонали матрицы путаницы увеличивались сверху слева вниз направо.

  • 'descending-diagonal' - Сортировать классы так, чтобы значения по диагонали матрицы путаницы уменьшались сверху слева вниз направо.

  • 'cluster' - Сортировка классов по кластеру аналогичных классов. Можно настроить кластеризацию с помощью pdist, linkage, и optimalleaforder функции. Дополнительные сведения см. в разделе Сортировка классов по аналогичным классам кластера.

  • Массив - сортировка классов в уникальном порядке, определяемом категориальным вектором, числовым вектором, строковым вектором, символьным массивом, массивом ячеек символьных векторов или логическим вектором. Массив должен быть перестановкой ClassLabels свойство матрицы путаницы.

Пример: sortClasses(cm,'ascending-diagonal')

Пример: sortClasses(cm,["owl","cat","toad"])

Представлен в R2018b