confusionchart

Создайте матричный график беспорядка для проблемы классификации

Описание

пример

confusionchart(trueLabels,predictedLabels) создает матричный график беспорядка от истины, маркирует trueLabels и предсказанные метки predictedLabels и возвращает ConfusionMatrixChart объект. Строки матрицы беспорядка соответствуют истинному классу, и столбцы соответствуют предсказанному классу. Диагональные и недиагональные ячейки соответствуют правильно и неправильно классифицированные наблюдения, соответственно. Используйте cm изменить матричный график беспорядка после того, как это создается. Для списка свойств смотрите ConfusionMatrixChart Properties.

confusionchart(m) создает матричный график беспорядка из числовой матрицы беспорядка m. Используйте этот синтаксис, если у вас уже есть числовая матрица беспорядка в рабочей области.

confusionchart(m,classLabels) задает метки класса, которые появляются вдоль оси X и оси Y. Используйте этот синтаксис, если у вас уже есть числовая матрица беспорядка и метки класса в рабочей области.

confusionchart(parent,___) создает график беспорядка на рисунке, панели или вкладке, заданной parent.

пример

confusionchart(___,Name,Value) задает дополнительный ConfusionMatrixChart свойства с помощью одного или нескольких аргументов пары "имя-значение". Задайте свойства после всех других входных параметров. Для списка свойств смотрите ConfusionMatrixChart Properties.

cm = confusionchart(___) возвращает ConfusionMatrixChart объект. Используйте cm изменить свойства графика после создания его. Для списка свойств смотрите ConfusionMatrixChart Properties.

Примеры

свернуть все

Загрузите ирисовый набор данных Фишера.

load fisheriris
X = meas;
Y = species;

X числовая матрица, которая содержит четыре лепестковых измерения для 150 ирисовых диафрагм. Y массив ячеек из символьных векторов, который содержит соответствующие ирисовые разновидности.

Обучите классификатор k - ближайших соседей (KNN), где количество самых близких соседей в предикторах (k) равняется 5. Хорошая практика должна стандартизировать числовые данные о предикторе.

Mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1);

Предскажите метки обучающих данных.

predictedY = resubPredict(Mdl);

Создайте матричный график беспорядка от истины, маркирует Y и предсказанные метки predictedY.

cm = confusionchart(Y,predictedY);

Figure contains an object of type ConfusionMatrixChart.

Матрица беспорядка отображает общее количество наблюдений в каждой ячейке. Строки матрицы беспорядка соответствуют истинному классу, и столбцы соответствуют предсказанному классу. Диагональные и недиагональные ячейки соответствуют правильно и неправильно классифицированные наблюдения, соответственно.

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

NormalizedValues свойство содержит значения матрицы беспорядка. Отобразите эти значения с помощью записи через точку.

cm.NormalizedValues
ans = 3×3

    50     0     0
     0    47     3
     0     4    46

Измените внешний вид и поведение матричного графика беспорядка путем изменения значений свойств. Добавьте заголовок.

cm.Title = 'Iris Flower Classification Using KNN';

Добавьте сводные данные строки и столбец.

cm.RowSummary = 'row-normalized';
cm.ColumnSummary = 'column-normalized';

Figure contains an object of type ConfusionMatrixChart. The chart of type ConfusionMatrixChart has title Iris Flower Classification Using KNN.

Нормированные на строку сводные данные строки отображают проценты правильно и неправильно классифицированные наблюдения для каждого истинного класса. Нормированные на столбец сводные данные столбца отображают проценты правильно и неправильно классифицированные наблюдения для каждого предсказанного класса.

Создайте матричный график беспорядка и отсортируйте классы графика согласно мудрому классом истинному положительному уровню (отзыв) или мудрому классом положительному прогнозирующему значению (точность).

Загрузите и смотрите 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;

Figure contains an object of type ConfusionMatrixChart.

Чтобы отсортировать матрицу беспорядка согласно истинному положительному уровню, нормируйте значения ячеек через каждую строку путем установки Normalization свойство к 'row-normalized' и затем используйте sortClasses. После сортировки, сброс Normalization свойство назад к 'absolute' отобразить общее количество наблюдений в каждой ячейке.

cm.Normalization = 'row-normalized'; 
sortClasses(cm,'descending-diagonal')
cm.Normalization = 'absolute'; 

Figure contains an object of type ConfusionMatrixChart.

Чтобы отсортировать матрицу беспорядка согласно положительному прогнозирующему значению, нормируйте значения ячеек через каждый столбец путем установки Normalization свойство к 'column-normalized' и затем используйте sortClasses. После сортировки, сброс Normalization свойство назад к 'absolute' отобразить общее количество наблюдений в каждой ячейке.

cm.Normalization = 'column-normalized';
sortClasses(cm,'descending-diagonal')
cm.Normalization = 'absolute';  

Figure contains an object of type ConfusionMatrixChart.

Выполните классификацию на длинном массиве ирисового набора данных Фишера. Вычислите матричный график беспорядка для известного, и предсказал высокие метки при помощи confusionchart функция.

Когда вы выполняете вычисления на длинных массивах, MATLAB® использует любого параллельный пул (значение по умолчанию, если у вас есть Parallel Computing Toolbox™), или локальный сеанс работы с MATLAB. Чтобы запустить пример с помощью локального сеанса работы с MATLAB, когда у вас будет Parallel Computing Toolbox, измените глобальную среду выполнения при помощи mapreducer функция.

mapreducer(0)

Загрузите ирисовый набор данных Фишера.

load fisheriris

Преобразуйте массивы в оперативной памяти meas и species к длинным массивам.

tx = tall(meas);
ty = tall(species);

Найдите количество наблюдений в длинном массиве.

numObs = gather(length(ty));   % gather collects tall array into memory

Установите seed генераторов случайных чисел с помощью rng и tallrng для воспроизводимости и случайным образом избранных обучающих выборок. Результаты могут варьироваться в зависимости от количества рабочих и среды выполнения для длинных массивов. Для получения дополнительной информации смотрите Управление Где Ваши Запуски Кода.

rng('default') 
tallrng('default')
numTrain = floor(numObs/2);
[txTrain,trIdx] = datasample(tx,numTrain,'Replace',false);
tyTrain = ty(trIdx); 

Подбирайте модель классификатора дерева решений на обучающих выборках.

mdl = fitctree(txTrain,tyTrain); 
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 2: Completed in 0.87 sec
- Pass 2 of 2: Completed in 0.99 sec
Evaluation completed in 3.3 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 4: Completed in 0.46 sec
- Pass 2 of 4: Completed in 0.58 sec
- Pass 3 of 4: Completed in 0.71 sec
- Pass 4 of 4: Completed in 1.2 sec
Evaluation completed in 3.5 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 4: Completed in 0.28 sec
- Pass 2 of 4: Completed in 0.31 sec
- Pass 3 of 4: Completed in 0.36 sec
- Pass 4 of 4: Completed in 0.37 sec
Evaluation completed in 1.7 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 4: Completed in 0.19 sec
- Pass 2 of 4: Completed in 0.22 sec
- Pass 3 of 4: Completed in 0.24 sec
- Pass 4 of 4: Completed in 0.22 sec
Evaluation completed in 1.2 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 4: Completed in 0.22 sec
- Pass 2 of 4: Completed in 0.21 sec
- Pass 3 of 4: Completed in 0.41 sec
- Pass 4 of 4: Completed in 0.23 sec
Evaluation completed in 1.3 sec

Предскажите метки для тестовых выборок при помощи обученной модели.

txTest = tx(~trIdx,:);
label = predict(mdl,txTest);

Создайте матричный график беспорядка для получившейся классификации.

tyTest = ty(~trIdx);
cm = confusionchart(tyTest,label)
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.16 sec
Evaluation completed in 0.53 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.21 sec
Evaluation completed in 0.35 sec

Figure contains an object of type ConfusionMatrixChart.

cm = 
  ConfusionMatrixChart with properties:

    NormalizedValues: [3x3 double]
         ClassLabels: {3x1 cell}

  Show all properties

Матричный график беспорядка показывает, что три измерения в versicolor классе неправильно классифицируются. Все измерения, принадлежащие setosa и virginica, классифицируются правильно.

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

свернуть все

Истинные метки проблемы классификации в виде категориального вектора, числового вектора, представляют в виде строки вектор, символьный массив, массив ячеек из символьных векторов или логический вектор. Если trueLabels вектор, затем каждый элемент соответствует одному наблюдению. Если trueLabels символьный массив, затем это должно быть двумерно с каждой строкой, соответствующей метке одного наблюдения.

Предсказанные метки проблемы классификации в виде категориального вектора, числового вектора, представляют в виде строки вектор, символьный массив, массив ячеек из символьных векторов или логический вектор. Если predictedLabels вектор, затем каждый элемент соответствует одному наблюдению. Если predictedLabels символьный массив, затем это должно быть двумерно с каждой строкой, соответствующей метке одного наблюдения.

Матрица беспорядка в виде матрицы. m должно быть квадратным, и его элементами должны быть положительные целые числа. Элемент m(i,j) число раз наблюдение за ith истинный класс был предсказан, чтобы быть jкласс th. Каждая цветная ячейка матричного графика беспорядка соответствует одному элементу матрицы беспорядка m.

Метки класса матричного графика беспорядка в виде категориального вектора, числового вектора, представляют в виде строки вектор, символьный массив, массив ячеек из символьных векторов или логический вектор. Если classLabels вектор, затем он должен иметь то же число элементов, как матрица беспорядка имеет строки и столбцы. Если classLabels символьный массив, затем это должно быть двумерно с каждой строкой, соответствующей метке одного класса.

Родительский контейнер в виде FigureПанель, Tab, TiledChartLayout, или GridLayout объект.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: cm = confusionchart(trueLabels,predictedLabels,'Title','My Title Text','ColumnSummary','column-normalized')

Примечание

Перечисленные здесь свойства являются только подмножеством. Для полного списка смотрите ConfusionMatrixChart Properties.

Заголовок матричного графика беспорядка в виде вектора символов или строкового скаляра.

Пример: cm = confusionchart(__,'Title','My Title Text')

Пример: cm.Title = 'My Title Text'

Сводные данные столбца матричного графика беспорядка в виде одного из следующего:

ОпцияОписание
'off'Не отображайте сводные данные столбца.
'absolute'Отобразите общее количество правильно и неправильно классифицированные наблюдения для каждого предсказанного класса.
'column-normalized'Отобразите количество правильно и неправильно классифицированные наблюдения для каждого предсказанного класса как проценты количества наблюдений за соответствующим предсказанным классом. Проценты правильно классифицированных наблюдений могут считаться мудрой классом точностью (или положительные прогнозирующие значения).
'total-normalized'Отобразите количество правильно и неправильно классифицированные наблюдения для каждого предсказанного класса как проценты общего количества наблюдений.

Пример: cm = confusionchart(__,'ColumnSummary','column-normalized')

Пример: cm.ColumnSummary = 'column-normalized'

Сводные данные строки матричного графика беспорядка в виде одного из следующего:

ОпцияОписание
'off'Не отображайте сводные данные строки.
'absolute'Отобразите общее количество правильно и неправильно классифицированные наблюдения для каждого истинного класса.
'row-normalized'Отобразите количество правильно и неправильно классифицированные наблюдения для каждого истинного класса как проценты количества наблюдений за соответствующим истинным классом. Проценты правильно классифицированных наблюдений могут считаться мудрыми классом отзывами (или истинные положительные уровни).
'total-normalized'Отобразите количество правильно и неправильно классифицированные наблюдения для каждого истинного класса как проценты общего количества наблюдений.

Пример: cm = confusionchart(__,'RowSummary','row-normalized')

Пример: cm.RowSummary = 'row-normalized'

Нормализация значений ячеек в виде одного из следующего:

ОпцияОписание
'absolute'Отобразите общее количество наблюдений в каждой ячейке.
'column-normalized'Нормируйте каждое значение ячейки на количество наблюдений, которое имеет тот же предсказанный класс.
'row-normalized'Нормируйте каждое значение ячейки на количество наблюдений, которое имеет тот же истинный класс.
'total-normalized'Нормируйте каждое значение ячейки на общее количество наблюдений.

Изменение нормализации значений ячеек также влияет на цвета ячеек.

Пример: cm = confusionchart(__,'Normalization','total-normalized')

Пример: cm.Normalization = 'total-normalized'

Выходные аргументы

свернуть все

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

Ограничения

  • Генерация кода MATLAB® не поддерживается для ConfusionMatrixChart объекты.

Больше о

свернуть все

Автономная визуализация

Автономная визуализация является графиком, спроектированным для особых целей, которые работают независимо из других графиков. В отличие от других графиков такой как plot и surf, автономной визуализации встроили предварительно сконфигурированный объект осей в него, и некоторые индивидуальные настройки не доступны. Автономная визуализация также имеет эти характеристики:

  • Это не может быть объединено с другими графическими элементами, такими как линии, закрашенные фигуры или поверхности. Таким образом, hold команда не поддерживается.

  • gca функция может возвратить объект диаграммы как текущую систему координат.

  • Можно передать объект диаграммы многим функциям MATLAB, которые принимают объект осей как входной параметр. Например, можно передать объект диаграммы title функция.

Расширенные возможности

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

Функции

Свойства

Введенный в R2018b