Вычислите матрицу беспорядка для проблемы классификации
C = confusionmat(group,grouphat)
C = confusionmat(group,grouphat,'Order',grouporder)
[C,order] = confusionmat(___)
использование C
= confusionmat(group
,grouphat
,'Order'
,grouporder
)grouporder
, чтобы заказать строки и столбцы C
.
Отобразите матрицу беспорядка для данных с двумя 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
— Известные группыИзвестные группы для категоризации наблюдений, заданных как числовой вектор, логический вектор, символьный массив, массив строк, массив ячеек из символьных векторов или категориальный вектор.
group
является группирующей переменной того же типа как grouphat
. Аргумент group
должен иметь то же количество наблюдений как grouphat
, как описано в Группирующих переменных. Функция confusionmat
обрабатывает символьные массивы и строковые массивы как массивы ячеек из символьных векторов. Кроме того, confusionmat
обрабатывает NaN
, пустой, и значения 'undefined'
в group
как отсутствующие значения, и не считает их как отличные группы или категории.
Пример: {'Male','Female','Female','Male','Female'}
Типы данных: single
| double
| logical
| char
| string
| cell
| categorical
grouphat
— Предсказанные группыПредсказанные группы для категоризации наблюдений, заданных как числовой вектор, логический вектор, символьный массив, массив строк, массив ячеек из символьных векторов или категориальный вектор.
grouphat
является группирующей переменной того же типа как group
. Аргумент grouphat
должен иметь то же количество наблюдений как group
, как описано в Группирующих переменных. Функция confusionmat
обрабатывает символьные массивы и строковые массивы как массивы ячеек из символьных векторов. Кроме того, confusionmat
обрабатывает NaN
, пустой, и значения 'undefined'
в grouphat
как отсутствующие значения, и не считает их как отличные группы или категории.
Пример: [1 0 0 1 0]
Типы данных: single
| double
| logical
| char
| string
| cell
| categorical
grouporder
— Порядок группыПорядок группы, заданный как числовой вектор, логический вектор, символьный массив, массив строк, массив ячеек из символьных векторов или категориальный вектор.
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
C
Матрица беспорядкаМатрица беспорядка, возвращенная как квадратная матрица с размером, равняется общему количеству отличных элементов в аргументах group
и grouphat
. C(i,j)
является количеством наблюдений, которые, как известно, были в группе i
, но предсказанный, чтобы быть в группе j
.
Строки и столбцы C
имеют идентичное упорядоченное расположение тех же индексов группы. По умолчанию порядок группы зависит от типа данных s = [group;grouphat]
:
Для числовых и логических векторов порядок является отсортированным порядком s
.
Для категориальных векторов порядок является порядком, возвращенным
.categories(s)
Для других типов данных порядок является порядком первого выступления в s
.
Чтобы изменить порядок, задайте grouporder
,
Функция confusionmat
обрабатывает NaN
, пустой, и значения 'undefined'
в группирующих переменных как отсутствующие значения, и не включает их в строки и столбцы C
.
order
— Порядок строк и столбцовПорядок строк и столбцов в C
, возвращенном как числовой вектор, логический вектор, категориальный вектор или массив ячеек из символьных векторов. Если group
и grouphat
являются символьными массивами, строковыми массивами или массивами ячеек из символьных векторов, то переменная order
является массивом ячеек из символьных векторов. В противном случае order
имеет тот же тип как group
и grouphat
.
Используйте confusionchart
, чтобы вычислить и построить матрицу беспорядка. Кроме того, confusionchart
отображает итоговую статистику о ваших данных и сортирует классы матрицы беспорядка согласно мудрой классом точности (положительное прогнозирующее значение), мудрый классом отзыв (истинный положительный уровень), или общее количество правильно классифицированных наблюдений.
Эта функция полностью поддерживает "высокие" массивы. Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.