plotconfusion

Постройте матрицу беспорядка классификации

Синтаксис

plotconfusion(targets,outputs)
plotconfusion(targets,outputs,name)
plotconfusion(targets1,outputs1,name1,targets2,outputs2,name2,...,targetsn,outputsn,namen)

Описание

пример

plotconfusion(targets,outputs) графики, которые матрица беспорядка для истины маркирует targets и предсказанный, маркируют outputs. Задайте метки как категориальные векторы, или в one-of-N (одногорячая) форма.

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

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

plotconfusion(targets,outputs,name) строит матрицу беспорядка и добавляет name в начало заголовка графика.

plotconfusion(targets1,outputs1,name1,targets2,outputs2,name2,...,targetsn,outputsn,namen) графики несколько матриц беспорядка в одной фигуре и добавляют аргументы name в начало заголовков соответствующих графиков.

Примеры

свернуть все

Загрузите данные, состоящие из синтетических изображений рукописных цифр. XTrain является 28 28 1 5 000 массивов изображений, и YTrain является категориальным вектором, содержащим метки изображения.

[XTrain,YTrain] = digitTrain4DArrayData;
whos YTrain
  Name           Size            Bytes  Class          Attributes

  YTrain      5000x1              6142  categorical              

Задайте архитектуру сверточной нейронной сети.

layers = [
    imageInputLayer([28 28 1])
    
    convolution2dLayer(3,8,'Padding','same')
    batchNormalizationLayer
    reluLayer    
    convolution2dLayer(3,16,'Padding','same','Stride',2)
    batchNormalizationLayer
    reluLayer
    convolution2dLayer(3,32,'Padding','same','Stride',2)
    batchNormalizationLayer
    reluLayer
    
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];

Задайте опции обучения и обучите сеть.

options = trainingOptions('sgdm',...
    'MaxEpochs',5,...
    'Verbose',false,...
    'Plots','training-progress');
net = trainNetwork(XTrain,YTrain,layers,options);

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

[XTest,YTest] = digitTest4DArrayData;
YPredicted = classify(net,XTest);

График, который матрица беспорядка истинного теста маркирует YTest и предсказанным, маркирует YPredicted.

plotconfusion(YTest,YPredicted)

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

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

Загрузите выборочные данные с помощью функции cancer_dataset. XTrain 9 699 матрица, задающая девять атрибутов 699 биопсий. YTrain 2 699 матрица, где каждый столбец указывает на правильную категорию соответствующего наблюдения. Каждый столбец YTrain имеет один элемент, который равняется один или в первой или во второй строке, соответствуя раку, являющемуся мягким или злостным, соответственно. Для получения дополнительной информации об этом наборе данных введите help cancer_dataset в командной строке.

rng default
[XTrain,YTrain] = cancer_dataset;
YTrain(:,1:10)
ans = 2×10

     1     1     1     0     1     1     0     0     0     1
     0     0     0     1     0     0     1     1     1     0

Создайте сеть распознавания образов и обучите ее с помощью выборочных данных.

net = patternnet(10);
net = train(net,XTrain,YTrain);

Оцените состояние рака с помощью обучившего сеть. Каждый столбец матричного YPredicted содержит предсказанные вероятности каждого наблюдения, принадлежащего классу 1 и классу 2, соответственно.

YPredicted = net(XTrain);
YPredicted(:,1:10)
ans = 2×10

    0.9999    0.9999    0.9999    0.0578    0.9993    0.9999    0.0012    0.0001    0.0028    0.9999
    0.0001    0.0001    0.0001    0.9422    0.0007    0.0001    0.9988    0.9999    0.9972    0.0001

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

plotconfusion(YTrain,YPredicted)

В этой фигуре первые две диагональных ячейки показывают номер и процент правильных классификаций обучившим сеть. Например, 446 биопсий правильно классифицируются как мягкие. Это соответствует 63,8% всех 699 биопсий. Точно так же 236 случаев правильно классифицируются как злостные. Это соответствует 33,8% всех биопсий.

5 из злостных биопсий неправильно классифицируются как мягкие, и это соответствует 0,7% всех 699 биопсий в данных. Точно так же 12 из мягких биопсий неправильно классифицируются как злостные, и это соответствует 1,7% всех данных.

Из 451 мягкого прогноза 98,9% правильны, и 1,1% являются неправильными. Из 248 злостных прогнозов 95,2% правильны, и 4,8% являются неправильными. Из 458 мягких случаев 97,4% правильно предсказаны столь же мягкие, и 2,6% предсказаны как злостные. Из 241 злостного случая 97,9% правильно классифицируются как злостные, и 2,1% классифицируются как мягкие.

В целом, 97,6% прогнозов правилен, и 2,4% являются неправильными.

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

свернуть все

Истинные метки класса, заданные одно из следующего:

  • Категориальный вектор, где каждый элемент является меткой класса одного наблюдения. Аргументы outputs и targets должны иметь то же число элементов. Если категориальные векторы задают базовые классы, то plotconfusion отображает все базовые классы, даже при отсутствии наблюдений за некоторыми базовыми классами. Если аргументы являются порядковыми категориальными векторами, то они должны оба задать те же базовые категории в том же порядке.

  • N-by-M матрица, где N является количеством классов и M, является количеством наблюдений. Каждый столбец матрицы должен быть в one-of-N (одногорячей) формой, где один элемент, равный 1, указывает на истинную метку, и все другие элементы равняются 0.

Предсказанные метки класса, заданные одно из следующего:

  • Категориальный вектор, где каждый элемент является меткой класса одного наблюдения. Аргументы outputs и targets должны иметь то же число элементов. Если категориальные векторы задают базовые классы, то plotconfusion отображает все базовые классы, даже при отсутствии наблюдений за некоторыми базовыми классами. Если аргументы являются порядковыми категориальными векторами, то они должны оба задать те же базовые категории в том же порядке.

  • N-by-M матрица, где N является количеством классов и M, является количеством наблюдений. Каждый столбец матрицы может быть в one-of-N (одногорячей) формой, где один элемент, равный 1, указывает на предсказанную метку, или в форме вероятностей та сумма одной.

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

Типы данных: char

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

|

Введенный в R2008a