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