MATLAB实现混淆矩阵评价指标(精度,召回率,F1分数)

记录一下,在学习用SVM分类时,需要对分类结果进行评价,光有正确率是不够的,所以就使用了混淆矩阵。原理的话,很多博客上都有,但为了便于理解程序,就简单讲一下。

结合程序,我们的类别是(-1,1),在Matlab中,类别是按照值的大小排的,即-1在前。但为了更加直观明了,解释理论的时候依然是1为正类。

 1-1

1

TPFN
-1FPTN

TP:真正,“T”,分类正确,“P”,预测为正

FP:假正,“F”,分类错误,“P”,预测为正

FN:假负,“F”,分类错误,“N”,预测为负

TN:真负,“T”,分类正确,“N”,预测为负

评价指标:

Precision 精确率:被正确分类的正样本数占所有被分成正样本数的比例

Precison=\frac{TP}{TP+FP}

Recall 召回率:被正确分类的正样本数占正样本总数的比例

Recall=\frac{TP}{TP+FN}

F1值:基于精确率和召回率的调和平均值

F1=\frac{2\times Precison\times Recall}{Precison+Recall}

根据公式,我们可以写出代码:

clc
clear all
% 真实类别
real_label = [1, 1, -1, -1, -1];

% 预测类别
predict_label = [1, 1, -1, -1, 1];
% 利用“confusionmat”可以直接产生混淆矩阵,不过-1在前,1在后
[A,~] = confusionmat(real_label,predict_label);

% 计算-1类的评价值
c1_precise = A(1,1)/(A(1,1) + A(2,1));
c1_recall = A(1,1)/(A(1,1) + A(1,2));
c1_F1 = 2 * c1_precise * c1_recall/(c1_precise + c1_recall);

% 计算1类的评价值
c2_precise = A(2,2)/(A(1,2) + A(2,2));
c2_recall = A(2,2)/(A(2,1) + A(2,2));
c2_F1 = 2 * c2_precise * c2_recall/(c2_precise + c2_recall);

PS:有任何不正确的地方,欢迎各位指正。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式3分钟

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值