이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

plotconfusion

분류 정오분류표 플로팅

설명

예제

plotconfusion(targets,outputs)는 실제 레이블 targets와 예측 레이블 outputs의 정오분류표를 플로팅합니다. 레이블을 categorical형 벡터로 지정하거나 1-of-N(one-hot) 형식으로 지정합니다.

정오분류표 플롯에서 행은 예측 클래스(출력 클래스)에 해당하고 열은 실제 클래스(목표 클래스)에 해당합니다. 주대각선 상에 있는 셀은 올바르게 분류된 관측값에 해당합니다. 주대각선 바깥의 셀은 오분류된 관측값에 해당합니다. 각 셀에는 관측값의 개수와 관측값의 총 개수의 비율이 모두 표시됩니다.

플롯의 오른쪽 끝에 있는 열에는 각각의 클래스에 속한다고 예측된 표본 중 바르게 분류된 예와 오분류된 예의 백분율이 표시됩니다. 이러한 측정값들을 각각 정밀도(양성예측도)와 오발견율이라고 부릅니다. 플롯 하단에 있는 행에는 올바르게 분류된 클래스와 잘못 분류된 클래스에 속하는 모든 표본의 백분율이 표시됩니다. 이러한 측정값들은 각각 재현율(참양성률) 그리고 거짓음성률이라고 부릅니다. 플롯 오른쪽 하단에 있는 셀에는 전반적인 정확도가 표시됩니다.

plotconfusion(targets,outputs,name)은 정오분류표를 플로팅하고 플롯 제목 시작 부분에 name을 추가합니다.

plotconfusion(targets1,outputs1,name1,targets2,outputs2,name2,...,targetsn,outputsn,namen)은 Figure 1개에 여러 개의 정오분류표를 플로팅하고 각 플롯의 제목 시작 부분에 name 인수를 추가합니다.

예제

모두 축소

손으로 쓴 숫자를 나타내는 합성 이미지로 구성된 데이터를 불러옵니다. XTrain은 이미지로 구성된 28x28x1x5,000 배열이고, YTrain은 이미지 레이블을 포함하는 categorical형 벡터입니다.

[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은 669건의 조직 검사의 9가지 특성을 정의하는 9x699 행렬입니다. YTrain은 각 열이 이에 대응하는 관측값의 올바른 범주를 나타내는 2x699 행렬입니다. YTrain의 각 열에는 첫 번째 행이나 두 번째 행에 값이 1인 요소가 하나 있습니다. 첫 번째 행은 양성 종양에, 두 번째 행은 악성 종양에 해당합니다. 이 데이터셋에 대한 자세한 내용을 보려면 명령줄에 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의 각 열에는 각 관측값이 각각 첫 번째 클래스와 두 번째 클래스에 속하는지 나타내는 예측 확률이 들어 있습니다.

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)

이 Figure에서 처음 2개의 대각선 셀에는 훈련된 네트워크가 올바르게 분류한 개수와 비율이 표시되어 있습니다. 예를 들어, 446건의 조직 검사가 양성으로 올바르게 분류되었습니다. 이는 총 699건의 조직 검사 중 63.8%에 해당합니다. 마찬가지로, 조직 검사 236건이 악성으로 올바르게 분류되었습니다. 이것은 전체 조직 검사의 33.8%에 해당합니다.

악성으로 분류된 조직 검사 결과 중 5건이 양성으로 잘못 분류되었으며, 이는 데이터에 있는 총 699건의 조직 검사 중 0.7%에 해당합니다. 마찬가지로, 양성으로 분류된 조직 검사 결과 중 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%가 잘못되었습니다.

입력 인수

모두 축소

실제 클래스 레이블로, 다음 중 하나로 지정됩니다.

  • 각 요소가 한 관측값의 클래스 레이블인 categorical형 벡터. outputstargets 인수는 요소 개수가 같아야 합니다. categorical형 벡터가 기본 클래스를 정의하는 경우, plotconfusion은 일부 기본 클래스의 관측값이 없어도 모든 기본 클래스를 표시합니다. 두 인수가 순서형 categorical형 벡터인 경우, 두 인수 모두 동일한 기본 범주를 동일한 순서로 정의해야 합니다.

  • N은 클래스의 개수이고 M은 관측값의 개수를 나타내는 NxM 행렬. 행렬의 각 열은 실제 레이블을 나타내는 값이 1인 요소가 하나이고 다른 모든 요소가 0인 1-of-N(one-hot) 형식이 되어야 합니다.

예측 클래스 레이블로, 다음 중 하나로 지정됩니다.

  • 각 요소가 한 관측값의 클래스 레이블인 categorical형 벡터. outputstargets 인수는 요소 개수가 같아야 합니다. categorical형 벡터가 기본 클래스를 정의하는 경우, plotconfusion은 일부 기본 클래스의 관측값이 없어도 모든 기본 클래스를 표시합니다. 두 인수가 순서형 categorical형 벡터인 경우, 두 인수 모두 동일한 기본 범주를 동일한 순서로 정의해야 합니다.

  • N은 클래스의 개수이고 M은 관측값의 개수를 나타내는 NxM 행렬. 행렬의 각 열은 예측 레이블을 나타내는 값이 1인 요소가 하나인 1-of-N(one-hot) 형식이나 총합이 1인 확률 값의 형식이 될 수 있습니다.

정오분류표 이름으로, 문자형 배열로 지정됩니다. plotconfusion은 플롯 제목의 시작 부분에 지정된 name을 추가합니다.

데이터형: char

R2008a에 개발됨