我想在MATLAB中绘制一个混淆矩阵。这是我的代码;
data = rand(3, 3)
imagesc(data)
colormap(gray)
colorbar
当我运行它时,会显示带有颜色条的混淆矩阵。但通常,我在MATLAB中看到混淆矩阵会给出计数和概率。我怎么能得到它们?如何更改将显示为1,2,3等的类标签?
我想要一个这样的矩阵:
答案 0 :(得分:2)
如果您没有神经网络工具箱,可以使用plotConfMat。它会得到以下结果。
我还在下面列出了一个独立的例子而不需要这个函数:
% 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。您可以创建副本并对其进行编辑以进一步自定义,例如打印自定义标签。