confusionmat

Вычислите матрицу беспорядка для проблемы классификации

Синтаксис

C = confusionmat(group,grouphat)
C = confusionmat(group,grouphat,'Order',grouporder)
[C,order] = confusionmat(___)

Описание

пример

C = confusionmat(group,grouphat) возвращает матрицу беспорядка C, определенный известными и предсказанными группами в group и grouphat, соответственно.

пример

C = confusionmat(group,grouphat,'Order',grouporder) использование grouporder, чтобы заказать строки и столбцы C.

пример

[C,order] = confusionmat(___) также возвращает порядок строк и столбцов C в переменной order с помощью любого из входных параметров в предыдущих синтаксисах.

Примеры

свернуть все

Отобразите матрицу беспорядка для данных с двумя misclassifications и одной недостающей классификацией.

Создайте векторы для известных групп и предсказанных групп.

g1 = [3 2 2 3 1 1]';	% Known groups
g2 = [4 2 3 NaN 1 1]';	% Predicted groups

Возвратите матрицу беспорядка.

C = confusionmat(g1,g2)
C = 4×4

     2     0     0     0
     0     1     1     0
     0     0     0     1
     0     0     0     0

Индексы строк и столбцов матрицы беспорядка C идентичен и располагается по умолчанию в отсортированном порядке [g1;g2], то есть, (1,2,3,4).

Матрица беспорядка показывает, что эти две точки данных, которые, как известно, были в группе 1, классифицируются правильно. Для группы 2 одна из точек данных неправильно классифицируется в группу 3. Кроме того, одна из точек данных, которые, как известно, были в группе 3, неправильно классифицируется в группу 4. confusionmat обрабатывает значение NaN в группирующей переменной g2 как отсутствующее значение и не включает его в строки и столбцы C.

Постройте матрицу беспорядка как матричный график беспорядка при помощи confusionchart.

confusionchart(C);

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

cm = confusionchart(g1,g2)

cm = 
  ConfusionMatrixChart with properties:

    NormalizedValues: [4x4 double]
         ClassLabels: [4x1 double]

  Show all properties

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

cm.NormalizedValues
ans = 4×4

     2     0     0     0
     0     1     1     0
     0     0     0     1
     0     0     0     0

cm.ClassLabels
ans = 4×1

     1
     2
     3
     4

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

Создайте векторы для известных групп и предсказанных групп.

g1 = [3 2 2 3 1 1]';	% Known groups
g2 = [4 2 3 NaN 1 1]';	% Predicted groups

Укажите, что группа заказывает и возвращает матрицу беспорядка.

C = confusionmat(g1,g2,'Order',[4 3 2 1])
C = 4×4

     0     0     0     0
     1     0     0     0
     0     1     1     0
     0     0     0     2

Индексы строк и столбцов матрицы беспорядка C идентичен и располагается в порядке, заданном порядком группы, то есть, (4,3,2,1).

Вторая строка матрицы беспорядка, C показывает, что одна из точек данных, которые, как известно, были в группе 3, неправильно классифицируется в группу 4. Третья строка C показывает, что одна из точек данных, принадлежащих группе 2, неправильно классифицируется в группу 3, и четвертая строка показывает, что эти две точки данных, которые, как известно, были в группе 1, классифицируются правильно. confusionmat обрабатывает значение NaN в группирующей переменной g2 как отсутствующее значение и не включает его в строки и столбцы C.

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

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

load fisheriris

Рандомизируйте измерения и группы в данных.

rng(0,'twister'); % For reproducibility
numObs = length(species);
p = randperm(numObs);
meas = meas(p,:);
species = species(p);

Обучите классификатор дискриминантного анализа при помощи измерений в первой половине данных.

half = floor(numObs/2);
training = meas(1:half,:);
trainingSpecies = species(1:half);
Mdl = fitcdiscr(training,trainingSpecies);

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

sample = meas(half+1:end,:);
grouphat = predict(Mdl,sample);

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

group = species(half+1:end);
[C,order] = confusionmat(group,grouphat,'Order',{'setosa','versicolor','virginica'})
C = 3×3

    29     0     0
     0    22     2
     0     0    22

order = 3x1 cell array
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

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

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

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

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

load fisheriris

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

tx = tall(meas);
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).
ty = tall(species);

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

numObs = gather(length(ty));   % gather collects tall array into memory
Evaluating tall expression using the Parallel Pool 'local':
Evaluation completed in 0.065 sec

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

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 Parallel Pool 'local':
Evaluation completed in 0.19 sec
Evaluating tall expression using the Parallel Pool 'local':
Evaluation completed in 0.51 sec
Evaluating tall expression using the Parallel Pool 'local':
Evaluation completed in 0.46 sec
Evaluating tall expression using the Parallel Pool 'local':
Evaluation completed in 0.44 sec
Evaluating tall expression using the Parallel Pool 'local':
Evaluation completed in 0.43 sec

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

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

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

tyTest = ty(~trIdx);
[C,order] = confusionmat(tyTest,label)
C =

  3×3 tall double matrix

    23     0     0
     0    23     3
     0     1    25


order =

  3×1 tall cell array

    {'setosa'    }
    {'versicolor'}
    {'virginica' }

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

Чтобы вычислить и построить матрицу беспорядка, используйте confusionchart вместо этого.

cm = confusionchart(tyTest,label)
Evaluating tall expression using the Parallel Pool 'local':
Evaluation completed in 0.11 sec
Evaluating tall expression using the Parallel Pool 'local':
Evaluation completed in 0.1 sec

cm = 
  ConfusionMatrixChart with properties:

    NormalizedValues: [3×3 double]
         ClassLabels: {3×1 cell}

  Show all properties

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

свернуть все

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

group является группирующей переменной того же типа как grouphat. Аргумент group должен иметь то же количество наблюдений как grouphat, как описано в Группирующих переменных. Функция confusionmat обрабатывает символьные массивы и строковые массивы как массивы ячеек из символьных векторов. Кроме того, confusionmat обрабатывает NaN, пустой, и значения 'undefined' в group как отсутствующие значения, и не считает их как отличные группы или категории.

Пример: {'Male','Female','Female','Male','Female'}

Типы данных: single | double | logical | char | string | cell | categorical

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

grouphat является группирующей переменной того же типа как group. Аргумент grouphat должен иметь то же количество наблюдений как group, как описано в Группирующих переменных. Функция confusionmat обрабатывает символьные массивы и строковые массивы как массивы ячеек из символьных векторов. Кроме того, confusionmat обрабатывает NaN, пустой, и значения 'undefined' в grouphat как отсутствующие значения, и не считает их как отличные группы или категории.

Пример: [1 0 0 1 0]

Типы данных: single | double | logical | char | string | cell | categorical

Порядок группы, заданный как числовой вектор, логический вектор, символьный массив, массив строк, массив ячеек из символьных векторов или категориальный вектор.

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

По умолчанию порядок группы зависит от типа данных s = [group;grouphat]:

  • Для числовых и логических векторов порядок является отсортированным порядком s.

  • Для категориальных векторов порядок является порядком, возвращенным categories(s).

  • Для других типов данных порядок является порядком первого выступления в s.

Пример: 'order',{'setosa','versicolor','virginica'}

Типы данных: single | double | logical | char | string | cell | categorical

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

свернуть все

Матрица беспорядка, возвращенная как квадратная матрица с размером, равняется общему количеству отличных элементов в аргументах group и grouphat. C(i,j) является количеством наблюдений, которые, как известно, были в группе i, но предсказанный, чтобы быть в группе j.

Строки и столбцы C имеют идентичное упорядоченное расположение тех же индексов группы. По умолчанию порядок группы зависит от типа данных s = [group;grouphat]:

  • Для числовых и логических векторов порядок является отсортированным порядком s.

  • Для категориальных векторов порядок является порядком, возвращенным categories(s).

  • Для других типов данных порядок является порядком первого выступления в s.

Чтобы изменить порядок, задайте grouporder,

Функция confusionmat обрабатывает NaN, пустой, и значения 'undefined' в группирующих переменных как отсутствующие значения, и не включает их в строки и столбцы C.

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

Альтернативная функциональность

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

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

Представленный в R2008b

Для просмотра документации необходимо авторизоваться на сайте