sortClasses

Сортировка классов матричного графика неточностей

Синтаксис

Описание

пример

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

Примеры

свернуть все

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

Загрузите и осмотрите 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 function, и сортировать классы для кластеризации аналогичных классов с помощью '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. The pdist функция вычисляет Евклидово расстояние D между парами значений матрицы неточностей. The 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