주요 콘텐츠

plotconfusion

(제거될 예정임) 분류 혼동행렬 플로팅

plotconfusion 함수는 향후 릴리스에서 제거될 예정입니다. 자세한 내용은 Transition Legacy Neural Network Code to dlnetwork Workflows 항목을 참조하십시오.

코드 업데이트에 대한 자세한 지침은 버전 내역 항목을 참조하십시오.

설명

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

plotconfusion은 categorical형 레이블에는 권장되지 않습니다. confusionchart를 대신 사용하십시오.

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

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

예제

plotconfusion(targets,outputs,name)은 혼동행렬을 플로팅하고 플롯 제목 시작 부분에 name을 추가합니다.

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

예제

모두 축소

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

load DigitsDataTrain
classNames = categories(labelsTrain);

컨벌루션 신경망의 아키텍처를 정의합니다.

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];

훈련 옵션을 지정하고 신경망을 훈련시킵니다.

options = trainingOptions('sgdm', ...
    'MaxEpochs',5, ...
    'Verbose',false, ...
    'Plots','training-progress', ...
    'Metrics','accuracy');
net = trainnet(XTrain,labelsTrain,layers,"crossentropy",options);

테스트 데이터를 불러오고 훈련된 신경망을 사용하여 분류합니다.

load DigitsDataTest
scores = minibatchpredict(net,XTest);
YTest = scores2label(scores,classNames);

테스트 레이블과 예측 레이블의 혼동행렬을 플로팅합니다.

plotconfusion(labelsTest,YTest)

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

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

모든 Figure를 닫습니다.

close(findall(groot,'Type','figure'))

입력 인수

모두 축소

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

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

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

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

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

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

혼동행렬 이름으로, 문자형 배열로 지정됩니다. plotconfusion 함수는 플롯 제목의 시작 부분에 지정된 name을 추가합니다.

데이터형: char

버전 내역

R2008a에 개발됨

모두 확장