机器学习算法性能度量

最近又返回去刷西瓜书了,重新看了一下混淆矩阵,性能度量最常用的就是混淆矩阵了吧?有错误的地方大佬们多多指正

1.混淆矩阵
真的字如其名,初次认识他我真的很容易被混淆,贴上图看一下:
在这里插入图片描述
(1)查准率(precision):

P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP

代表的是预测为正例里面,正确的比例

(2)查全率(召回率)(recall):

R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP

代表的是真实值为正例里面被正确预测出来的比例

(3)F1分数
综合考量了查准率和查全率,一般很多模型都是用这个来评价,公式:
F 1 = 2 ∗ P ∗ R P + R = 2 ∗ T P 样 例 总 数 + T P − T N F1=\frac{2*P*R}{P+R}=\frac{2*TP}{样例总数+TP-TN} F1=P+R2PR=+TPTN2TP

2.代码实现
sklearn里面封装好了完整的混淆矩阵库,可以直接调用:

from sklearn.metrics import f1_score
from sklearn.metrics import accuracy_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
precision_score=precision_score(labels_test,y_pred,pos_label=1,average='binary')
accuracy=accuracy_score(labels_test,y_pred)
recall_score=recall_score(labels_test,y_pred,pos_label=1,average='binary')
F1=f1_score(labels_test,y_pred,pos_label=1,average='binary')
print('precision_score=',precision_score)
print('recall_score=',recall_score)
print('accuracy_score=',accuracy)
print('f1_score=',F1)

out:precision_score= 0.866738894907909
recall_score= 0.70298769771529
accuracy_score= 0.711875
f1_score= 0.7763221737020863

代码直接调用非常简单,需要注意的一点是,在计算的过程中,计算机其实并不知道0和1哪个是正例哪个是反例,需要我们人为的去标定它,在查全率、召回率、F1分数都用到了混淆矩阵,那么就需要区分正反例,函数中pos_label=1是用于认人为标记样本正例的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值