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