绘制混淆矩阵

时间:2015-10-31 12:36:34

标签: matlab confusion-matrix

我想在MATLAB中绘制一个混淆矩阵。这是我的代码;

data = rand(3, 3)
imagesc(data) 
colormap(gray) 
colorbar 

当我运行它时,会显示带有颜色条的混淆矩阵。但通常,我在MATLAB中看到混淆矩阵会给出计数和概率。我怎么能得到它们?如何更改将显示为1,2,3等的类标签?

我想要一个这样的矩阵:

Confusion matrix example

2 个答案:

答案 0 :(得分:2)

如果您没有神经网络工具箱,可以使用plotConfMat。它会得到以下结果。

Example Confusion Matrix

我还在下面列出了一个独立的例子而不需要这个函数:

% sample data
confmat = magic(3);
labels = {'Dog', 'Cat', 'Horse'};

numlabels = size(confmat, 1); % number of labels

% calculate the percentage accuracies
confpercent = 100*confmat./repmat(sum(confmat, 1),numlabels,1);

% plotting the colors
imagesc(confpercent);
title('Confusion Matrix');
ylabel('Output Class'); xlabel('Target Class');

% set the colormap
colormap(flipud(gray));

% Create strings from the matrix values and remove spaces
textStrings = num2str([confpercent(:), confmat(:)], '%.1f%%\n%d\n');
textStrings = strtrim(cellstr(textStrings));

% Create x and y coordinates for the strings and plot them
[x,y] = meshgrid(1:numlabels);
hStrings = text(x(:),y(:),textStrings(:), ...
    'HorizontalAlignment','center');

% Get the middle value of the color range
midValue = mean(get(gca,'CLim'));

% Choose white or black for the text color of the strings so
% they can be easily seen over the background color
textColors = repmat(confpercent(:) > midValue,1,3);
set(hStrings,{'Color'},num2cell(textColors,2));

% Setting the axis labels
set(gca,'XTick',1:numlabels,...
    'XTickLabel',labels,...
    'YTick',1:numlabels,...
    'YTickLabel',labels,...
    'TickLength',[0 0]);

答案 1 :(得分:0)

如果您有神经网络工具箱,则可以使用函数plotconfusion。您可以创建副本并对其进行编辑以进一步自定义,例如打印自定义标签。