exponenta event banner

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 функция.

При выполнении вычислений в массивах TALL MATLAB ® использует либо параллельный пул (по умолчанию при наличии Toolbox™ Parallel Computing), либо локальный сеанс 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

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

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) - количество раз, когда наблюдение iИстинный класс был предсказан как принадлежащий jВ-й класс. Каждая цветная ячейка матрицы путаницы соответствует одному элементу матрицы путаницы m.

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

Родительский контейнер, указанный как Figure, Panel, 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'Нормализуйте каждое значение ячейки по количеству наблюдений, имеющих один и тот же класс true.
'total-normalized'Нормализуйте каждое значение ячейки по общему количеству наблюдений.

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

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

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

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

свернуть все

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

Ограничения

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

Подробнее

свернуть все

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

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

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

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

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

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

См. также

Функции

Свойства

Представлен в R2018b