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;

Чтобы отсортировать матрицу беспорядка согласно истинному положительному уровню, нормируйте значения ячеек через каждую строку путем установки 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 функция и вид классы, чтобы кластеризировать подобные классы при помощи '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);

Кластер Используя '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 функция возвращает оптимальное листовое упорядоченное расположение для иерархического бинарного кластерного древовидного 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)

Отсортированная матрица беспорядка строит диаграмму 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);

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

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

Входные параметры

свернуть все

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

Закажите, в котором можно отсортировать классы матричного графика беспорядка в виде одного из этих значений:

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

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

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

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

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

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

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

Смотрите также

Функции

Свойства

Введенный в R2018b