前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【机器学习】F1分数(F1 Score)详解及tensorflow、numpy实现

【机器学习】F1分数(F1 Score)详解及tensorflow、numpy实现

作者头像
全栈程序员站长
发布于 2022-11-04 09:37:54
发布于 2022-11-04 09:37:54
13.7K00
代码可运行
举报
运行总次数:0
代码可运行

F1-Score相关概念

  • F1分数(F1 Score),是统计学中用来衡量二分类(或多任务二分类)模型精确度的一种指标。它同时兼顾了分类模型的准确率和召回率。F1分数可以看作是模型准确率和召回率的一种加权平均,它的最大值是1,最小值是0,值越大意味着模型越好。假如有100个样本,其中1个正样本,99个负样本,如果模型的预测只输出0,那么正确率是99%,这时候用正确率来衡量模型的好坏显然是不对的。

真实 1

真实 0

预测 1

True Positive(TP)真阳性

False Positive(FP)假阳性

预测 0

False Negative(FN)假阴性

True Negative(TN)真阴性

  • 查准率(precision),指的是预测值为1真实值也为1的样本在预测值为1的所有样本中所占的比例。以西瓜问题为例,算法挑出来的西瓜中有多少比例是好西瓜。
  • 召回率(recall),也叫查全率,指的是预测值为1真实值也为1的样本在真实值为1的所有样本中所占的比例。所有的好西瓜中有多少比例被算法挑了出来。
  • F1分数(F1-Score),又称为平衡F分数(BalancedScore),它被定义为精确率和召回率的调和平均数。

更一般的,我们定义Fβ分数为:

除了F1分数之外,F0.5分数和F2分数,在统计学中也得到了大量应用,其中,F2分数中,召回率的权重高于精确率,而F0.5分数中,精确率的权重高于召回率。

Macro-F1和Micro-F1

  • Macro-F1和Micro-F1是相对于多标签分类而言的。
  • Micro-F1,计算出所有类别总的Precision和Recall,然后计算F1。
  • Macro-F1,计算出每一个类的Precison和Recall后计算F1,最后将F1平均。

tensorflow实现Macro-F1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tensorflow as tf
def f1(y_hat, y_true, model='multi'):
''' 输入张量y_hat是输出层经过sigmoid激活的张量 y_true是label{0,1}的集和 model指的是如果是多任务分类,single会返回每个分类的f1分数,multi会返回所有类的平均f1分数(Marco-F1) 如果只是单个二分类任务,则可以忽略model '''
epsilon = 1e-7
y_hat = tf.round(y_hat)#将经过sigmoid激活的张量四舍五入变为01输出
tp = tf.reduce_sum(tf.cast(y_hat*y_true, 'float'), axis=0)
#tn = tf.sum(tf.cast((1-y_hat)*(1-y_true), 'float'), axis=0)
fp = tf.reduce_sum(tf.cast(y_hat*(1-y_true), 'float'), axis=0)
fn = tf.reduce_sum(tf.cast((1-y_hat)*y_true, 'float'), axis=0)
p = tp/(tp+fp+epsilon)#epsilon的意义在于防止分母为0,否则当分母为0时python会报错
r = tp/(tp+fn+epsilon)
f1 = 2*p*r/(p+r+epsilon)
f1 = tf.where(tf.is_nan(f1), tf.zeros_like(f1), f1)
if model == 'single':
return f1
if model == 'multi':
return tf.reduce_mean(f1)

测试

  • 测试变量是多任务分类的输出
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tensorflow as tf
y_true = tf.constant([[1,1,0,0,1], [1,0,1,1,0], [0,1,1,0,0]])
y_hat = tf.constant([[0,1,1,1,1], [1,0,0,1,1], [1,0,1,0,0]])
with tf.Session() as sess:
f1 = f1(y_hat, y_true)
print('F1 score:', sess.run(f1))
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
F1 score: 0.5999999

numpy实现Macro-F1

(2019.1.12更新)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
def f1(y_hat, y_true, THRESHOLD=0.5):
''' y_hat是未经过sigmoid函数激活的 输出的f1为Marco-F1 '''
epsilon = 1e-7
y_hat = y_hat>THRESHOLD
y_hat = np.int8(y_hat)
tp = np.sum(y_hat*y_true, axis=0)
fp = np.sum(y_hat*(1-y_true), axis=0)
fn = np.sum((1-y_hat)*y_true, axis=0)
p = tp/(tp+fp+epsilon)#epsilon的意义在于防止分母为0,否则当分母为0时python会报错
r = tp/(tp+fn+epsilon)
f1 = 2*p*r/(p+r+epsilon)
f1 = np.where(np.isnan(f1), np.zeros_like(f1), f1)
return np.mean(f1)

参考资料

[1] https://baike.baidu.com/item/F1%E5%88%86%E6%95%B0/13864979?fr=aladdin [2] https://www.kaggle.com/guglielmocamporese/macro-f1-score-keras [3] 分类问题的几个评价指标(Precision、Recall、F1-Score、Micro-F1、Macro-F1)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181930.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【评价指标】详解F1-score与多分类MacroF1&MicroF1
首先,要背住的几个概念就是:accuracy, precision, recall, TP,FP,TN,FN
机器学习炼丹术
2020/07/14
3.6K0
【评价指标】详解F1-score与多分类MacroF1&MicroF1
理解目标检测中的mAP与F1 Score
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/04
9140
介绍平衡准确率(Balanced Accuracy)和加权 F1 值(Weighted F1)
为什么要使用平衡准确率(Balanced Accuracy)和加权 F1 值(Weighted F1)?
叶庭云
2024/05/25
1.3K0
介绍平衡准确率(Balanced Accuracy)和加权 F1 值(Weighted F1)
评价指标之Micro-F1与Macro-F1
每天给你送来NLP技术干货! ---- 来源:https://zhuanlan.zhihu.com/p/274568639 作者:懒杰一点也不懒 编辑:AI算法小喵 1. Precision和Recall 名称 释义 TP(True Positive) 真阳性:预测为正,实际也为正 FP(False Positive) 假阳性:预测为正,实际却为负 TN(True Negative) 真阴性:预测为负,实际也为负 FN(False Negative) 假阴性:预测为负,实际却为正 TP、FP、TN、FN等
zenRRan
2022/06/27
5.2K0
评价指标之Micro-F1与Macro-F1
micro f1和macro f1_correct score
首先,明确一个概念,精确率(Precision)和召回率(Recall)并不是只有在目标检测中才有的,是所有任务涉及到分类的都有。而且P和R是针对于每一类来说的,每一个类别都有自己的准确率和召回率,计算每一个类别时,该样本即为正样本,其他样本统一为负样本来计算。
全栈程序员站长
2022/11/07
5290
micro f1和macro f1_correct score
精确度 召回率 f1_score多大了
分类是机器学习中比较常见的任务,对于分类任务常见的评价指标有准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 score、ROC曲线(Receiver Operating Characteristic Curve)等。 这篇文章将结合sklearn对准确率、精确率、召回率、F1 score进行讲解,ROC曲线可以参考我的这篇文章: sklearn ROC曲线使用。
全栈程序员站长
2022/11/04
9860
精确度 召回率 f1_score多大了
F1score_f1 官网
________________________________________________________________________________________________________
全栈程序员站长
2022/11/04
6490
F1score_f1 官网
准确率、精确率、召回率、F1-score
分类是机器学习中比较常见的任务,对于分类任务常见的评价指标有准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 score、ROC曲线(Receiver Operating Characteristic Curve)等
mathor
2020/03/02
7.9K0
分类评估方法-召回率、ROC与混淆矩阵
精确率(Precision)与召回率(Recall)是分类任务中的常用指标,首先需要知道混淆矩阵。
唔仄lo咚锵
2022/11/30
1.8K0
分类评估方法-召回率、ROC与混淆矩阵
机器学习算法常用指标总结
准确度是衡量模型性能的最基本指标。它的定义非常简单,就是模型预测正确的次数占总预测次数的比例。准确度的计算公式是:
zhangjiqun
2024/12/14
1560
机器学习算法常用指标总结
准确率、精准率、召回率、F1,我们真了解这些评价指标的意义吗?
本文首发于知乎 https://zhuanlan.zhihu.com/p/147663370
AI科技评论
2020/06/29
4.5K0
准确率、精准率、召回率、F1,我们真了解这些评价指标的意义吗?
机器学习-07-分类回归和聚类算法评估函数及案例
本系列是机器学习课程的系列课程,主要介绍机器学习中分类回归和聚类算法中的评价函数。
用户2225445
2024/05/07
1880
机器学习-07-分类回归和聚类算法评估函数及案例
目标检测模型的评价标准-AP与mAP
为了了解模型的泛化能力,即判断模型的好坏,我们需要用某个指标来衡量,有了评价指标,就可以对比不同模型的优劣,并通过这个指标来进一步调参优化模型。对于分类和回归两类监督模型,分别有各自的评判标准。
h3110_w0r1d
2025/02/04
1030
真正的趋势之王指标_accer指标优点缺点
首先看真阳性:真阳性的定义是“预测为正,实际也是正”,这个最好理解,就是指预测正确,是哪个类就被分到哪个类。对类A而言,TP的个位数为2,对类B而言,TP的个数为2,对类C而言,TP的个数为1。
全栈程序员站长
2022/09/27
1.3K0
贾尚文_roc指标详解及实战用法
其中,TP(真正,True Positive)表示真正结果为正例,预测结果也是正例;FP(假正,False Positive)表示真实结果为负例,预测结果却是正例;TN(真负,True Negative)表示真实结果为正例,预测结果却是负例;FN(假负,False Negative)表示真实结果为负例,预测结果也是负例。显然,TP+FP+FN+TN=样本总数。
全栈程序员站长
2022/09/28
9890
贾尚文_roc指标详解及实战用法
简单聊聊模型的性能评估标准
在机器学习领域中,对模型的评估非常重要,只有选择和问题相匹配的评估方法,才能快速发现算法模型或者训练过程的问题,迭代地对模型进行优化。
kbsc13
2019/08/16
1.2K0
F1是合适的指标吗?那么F2 F3…F_beta呢?
根据许多数据科学家的说法,最可靠的模型性能度量是准确率。但是确定的模型指标不只有一个,还有很多其他指标。例如,准确率可能很高,但是假阴性也很高。另一个关键度量是当今机器学习中常见的F指标,用于评估模型性能。它按比例结合了精度和召回率。在这篇文章中,我们探讨了建议两者不平衡的不同方法。
deephub
2021/04/16
1.3K0
一文弄懂pytorch搭建网络流程+多分类评价指标
讲在前面,本来想通过一个简单的多层感知机实验一下不同的优化方法的,结果写着写着就先研究起评价指标来了,之前也写过一篇:https://www.cnblogs.com/xiximayou/p/13700934.html 与上篇不同的是,这次我们新加了一些相关的实现,接下来我们慢慢来看。
西西嘛呦
2021/05/18
1.6K0
一文弄懂pytorch搭建网络流程+多分类评价指标
机器学习入门 10-3 实现混淆矩阵,精确率和召回率
本系列是《玩转机器学习教程》一个整理的视频笔记。本小节首先通过具体的编程实现混淆矩阵进而计算精准率和召回率两个指标,最后使用sklearn中封装的库函数实现混淆矩阵、精准率以及召回率。
触摸壹缕阳光
2020/04/08
1.8K0
机器学习入门 10-3 实现混淆矩阵,精确率和召回率
机器学习模型评估指标
实际应用中,评估指标依具体问题灵活使用,在选择模型和调整参数过程中选择正确的指标十分重要。模型评估目标应以业务目标为导向,选择最合适的评估指标。
aiplus
2021/11/04
2.4K0
推荐阅读
相关推荐
【评价指标】详解F1-score与多分类MacroF1&MicroF1
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文