Сортировка классов матричного графика беспорядка
Создайте матричный график беспорядка и отсортируйте классы графика согласно мудрому классом истинному положительному уровню (отзыв) или мудрому классом положительному прогнозирующему значению (точность).
Загрузите и смотрите 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"])

cm — Матричный график беспорядкаConfusionMatrixChart объектМатричный график беспорядка в виде ConfusionMatrixChart объект. Чтобы создать матричный график беспорядка, использовать confusionchart,
order — Закажите, в котором можно отсортировать классы'auto' | 'ascending-diagonal' | 'descending-diagonal' | 'cluster' | массивЗакажите, в котором можно отсортировать классы матричного графика беспорядка в виде одного из этих значений:
'auto' — Сортировки классов в их естественный порядок, как задано sort функция. Например, если метки класса матричного графика беспорядка являются вектором строки, то вид в алфавитном порядке. Если метки класса являются порядковым категориальным вектором, то используйте порядок меток класса.
'ascending-diagonal' — Сортировка классов так, чтобы значения по диагонали матричного увеличения беспорядка от левого верхнего до правого нижнего.
'descending-diagonal' — Сортировка классов так, чтобы значения по диагонали матричного уменьшения беспорядка от левого верхнего до правого нижнего.
'cluster' — Сортировка классов, чтобы кластеризировать подобные классы. Можно настроить кластеризацию при помощи pdist, linkage, и optimalleaforder функции. Для получения дополнительной информации смотрите сортировку Классов к Кластерным Подобным Классам.
Массив — сортировка классов в уникальном порядке, заданном категориальным вектором, числовым вектором, представляет в виде строки вектор, символьный массив, массив ячеек из символьных векторов или логический вектор. Массив должен быть сочетанием ClassLabels свойство матричного графика беспорядка.
Пример: sortClasses(cm,'ascending-diagonal')
Пример: sortClasses(cm,["owl","cat","toad"])
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.