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