
MATLAB中绘制混淆矩阵
这个混淆矩阵的代码我也是copy的,超级好用!
·
这个混淆矩阵的代码我也是copy的,超级好用!
%imdsTest是测试集,predict_label是预测标签
function [confusion_matrix]=Draw_confusion_matrix(imdsTest,predict_label)
%% 绘制混淆矩阵
predict_label=predict_label';
tabletest=countEachLabel(imdsTest);%这是个结构体,点开工作区的变量见名知意
num_in_class=tabletest.Count';%这个num_in_class 和祖传代码等价,但这次是用程序自动完成的
classnames=cellstr(tabletest.Label);
name_class=classnames';%是一个1xn的cell向量,绘制混淆矩阵需要用到
[confusion_matrix]=compute_confusion_matrix(predict_label,num_in_class,name_class);%绘制混淆矩阵,所以混淆矩阵的3个函数要放在同一个文件夹内
end
% 预测标签,每一类的数目,类别数目
function [confusion_matrix]=compute_confusion_matrix(predict_label,num_in_class,name_class)
% predict_label为一维行向量
% num_in_class代表每一类的个数
% name_class代表类名
num_class=length(num_in_class);
num_in_class=[0 num_in_class];
confusion_matrix=size(num_class,num_class);
for ci=1:num_class
for cj=1:num_class
summer=0;%统计对应标签个数
c_start=sum(num_in_class(1:ci))+1;
c_end=sum(num_in_class(1:ci+1));
summer=size(find(predict_label(c_start:c_end)==cj),2); % 统计对应标签个数,注意此处的predict_label可能是数值组成的向量,不是字符串组成的向量
confusion_matrix(ci,cj)=summer/num_in_class(ci+1);%这个是显示正确率,
% confusion_matrix(ci,cj)=summer;%这个是显示图片有多少张,
end
end
draw_cm(confusion_matrix,name_class,num_class);
end
function draw_cm(mat,tick,num_class)
%%
% Matlab code for visualization of confusion matrix;
% Parameters:mat: confusion matrix;
% tick: name of each class, e.g. 'class_1' 'class_2'...
% num_class: number of class
%
%%
imagesc(1:num_class,1:num_class,mat); %# in color
colormap(flipud(gray)); %# for gray; black for large value.
textStrings = num2str(mat(:),'%0.2f');
textStrings = strtrim(cellstr(textStrings));
[x,y] = meshgrid(1:num_class);
hStrings = text(x(:),y(:),textStrings(:), 'HorizontalAlignment','center','FontSize',14);
midValue = mean(get(gca,'CLim'));
textColors = repmat(mat(:) > midValue,1,3);
set(hStrings,{'Color'},num2cell(textColors,2)); %# Change the text colors
set(gca,'xticklabel',tick,'XAxisLocation','top');
set(gca, 'XTick', 1:num_class, 'YTick', 1:num_class);
set(gca,'yticklabel',tick);
set(gca,'FontSize',14,'Fontname', 'Helvetica');
rotateXLabels(gca, 315 );% rotate the x tick
更多推荐
所有评论(0)