利用Matlab内置函数绘制Matlab风格的混淆矩阵图并计算F1值

新建一个.m文件,复制以下代码即可定义函数PlotConfusion,直接按要求调用即可:
function F1=PlotConfusion(confusion_matrix)
%输入混淆矩阵,绘制混淆矩阵图
%列的方向是真实值,行的方向是预测值
%或者说是x轴为真实标签,y轴是预测标签,原点在左上角
%返回值F1是每个类别的recall和precision的调和平均值,按行排列
%例如:f1=PlotConfusion([12,3;15,2]);

[label_num,~]=size(confusion_matrix);
sum_lable=sum(confusion_matrix);
sum_pre_lable=sum((confusion_matrix'));
precision=zeros(1,label_num);
recall=zeros(1,label_num);
F1=zeros(1,label_num);
%构造plotconfusion函数的输入
labels=[];
predicted_labels=[];
for col=1:label_num
   for row=1:label_num
       num=confusion_matrix(row,col);
       %计算recall和precision
       if(row==col)
           recall(row)=num/sum_lable(row);
           precision(row)=num/sum_pre_lable(row);
       end
       %构造过程
       temp=zeros(label_num,num);
       temp_pre=temp;
       one_row=ones(1,num);
       temp(col,:)=one_row;
       temp_pre(row,:)=one_row;
       labels=[labels,temp];
       predicted_labels=[predicted_labels,temp_pre];
   end
end
%绘制混淆矩阵
plotconfusion(labels,predicted_labels);

%计算各类F1指标
for i=1:label_num
    F1(i)=2*recall(i)*precision(i)/(recall(i)+precision(i));
end

end
  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值