sklearn.metrics 中的f1-score介绍

news2024/11/26 10:04:53

1 f1_score,average='binary', 'macro', 'micro', 'weighted'

        F1得分可以解释为精确度和召回率的调和平均值,其中F1得分达到其最佳值为1,最差得分为0。精确度和召回率对F1得分的相对贡献相等。F1得分的公式为:

F1 = 2 * (precision * recall) / (precision + recall)

        在多类别和多标签的情况下,这是每个类别的F1得分的平均值,其权重取决于平均参数。

sklearn.metrics.f1_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')

参数介绍:

        y_true:1d array,或label array/sparse matrix,Ground truth (correct) target values

        y_pred: 分类器返回的估计目标。

        pos_label:str or int, default=1,要报告 average = ‘ binary’且数据为二分类。如果数据是多类或多标签的,这将被忽略; 设置labels = [ pos _ label ]和average!= “binary”将只报告该标签的分数。

        average: 该参数是多类/多标签目标所必需的。如果没有,则返回每个类的分数。否则,这将确定对数据执行的平均类型:

'binary': 仅报告pos_label指定的类的结果。这仅适用于目标 (y_{true,pred}) 是二分类的。

'micro': 通过计算总真阳性、假阴性和假阳性来全局计算指标。

        权重倾向:每一个样本的权重都相同;
        适用环境多分类不平衡,若数据极度不平衡会影响结果;

 'macro': 计算每个标签的指标,并找到它们的未加权平均值。

取值范围:每一类别的权重都相同;
适用环境多分类问题,不受数据不平衡影响,容易受到识别性高(高recall、高precision)的类别影响;

'weighted': 计算每个标签的指标,并找到它们的平均加权支持 (每个标签的真实实例数)。这会改变 “macro” 以解决标签不平衡; 它可能导致F分数不在精度和召回率之间。

'samples': 计算每个实例的指标,并找到它们的平均值 (仅对于与accuracy_score不同的多标签分类有意义)。

代码展示:

二分类情况:

>>> from sklearn.metrics import precision_score, recall_score, f1_score
>>> y_true = [0, 1, 0, 0, 1, 0, 1]
>>> y_pred = [0, 1, 0, 0, 0, 1, 0]
# 计算二分类情况下的average = 'macro' 'micro' 'binary'
# 二分类情况下,也能用macro和micro,但一般用binary
>>> f1_score(y_true, y_pred,average='macro')
0.5333333333333332
>>> precision_score(y_true, y_pred, average='macro')
0.55
>>> recall_score(y_true, y_pred, average='macro')
0.5416666666666666

>>> precision_score(y_true, y_pred, average='micro')
0.5714285714285714
>>> recall_score(y_true, y_pred, average='micro')
0.5714285714285714
>>> f1_score(y_true, y_pred,average='micro')
0.5714285714285714

>>> f1_score(y_true, y_pred,average='binary')
0.4
>>> recall_score(y_true, y_pred, average='binary')
0.3333333333333333
>>> precision_score(y_true, y_pred, average='binary')
0.5
>>> f1_score(y_true, y_pred) # 二分类情况下,默认使用binary
0.4

多分类情况:

>>> from sklearn.metrics import precision_score, recall_score, f1_score
>>> y_true = [0, 1, 2, 0, 1, 2]
>>> y_pred = [0, 2, 1, 0, 0, 1]
>>> f1_score(y_true, y_pred, average='macro')
0.26666666666666666
>>> f1_score(y_true, y_pred, average='micro')
0.3333333333333333
>>> f1_score(y_true, y_pred, average=None) # 相当于binary,为每个类别计算binary的f1分数,但是不能输入binary,要输入None
array([0.8, 0. , 0. ])
>>> 0.8/3
0.26666666666666666

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/477830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4.30学习周报

文章目录 前言文献阅读摘要简介数据源和预处理理论基础与模型构建结果和讨论结论和未来工作 时间序列预测总结 前言 本周阅读文献《Water Quality Prediction Based on LSTM and Attention Mechanism: A Case Study of the Burnett River, Australia》,文献主要提出…

SOLIDWORKS培训|弧长如何标注

大家在使用SolidWorks软件时,如果想对不同形状的弧长度进行标注,可以试试以下方法。 ◉ 标注圆弧 点四下鼠标,需要点击弧线和两个端点。 我们先使用圆心起点圆弧工具绘制一个圆弧。 然后点击智能尺寸,点击圆弧,没错…

【Python_Opencv图像处理框架】信用卡数字识别项目

写在前面 本篇文章是opencv学习的第六篇文章,前面主要讲解了对图像的一些基本操作,这篇文章我们就开始大展身手,将前面所学的基础操作活学活用。既能复习基础操作,又能学到一些新的知识。作为初学者,我尽己所能&#…

Change Buffer详解

change Buffer基本概念 Change Buffer:写缓冲区,是针对二级索引(辅助索引) 页的更新优化措施 作用: 在进行DML(写)操作(insert/update/delete)时,如果请求的是 辅助索引(非唯一键索引)没有在缓冲池 中时,并不会立刻将…

多态

一、多态性概述 1、静态多态实现的两种方式:模板和函数重载 2、动态多态(一般上所说的多态都是指动态多态) 示例: 若执行pa->f(pa),则由动态编联找到派生类,而pa静态类型为A*,所以输出3若执行…

notepad++安装HexEditor插件查看二进制文件

文章目录 前言一、下载 HexEditor 插件二、解压文件三、将插件放置到 plugins 目录下四、重启软件测试 前言 有时候我们需要分析二进制文件,但是分析二进制文件直接用编辑器查看会出现乱码的情况,本文在 notepad 软件上安装一个 HexEditor 插件&#xf…

【Java笔试强训 19】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥汽水瓶 …

各大“排序”特性及稳定性总结

一、各个排序特性 二、各个排序的稳定性分析及例子 稳定性如何定义:排序算法的稳定性并不是指它在对数组进行排序的时候的时间复杂度是否变化,而是对于相同数值的数据进行排序了之后它们的相对位置是否发生了变化,比如说在考试的时候…

【Java笔试强训 18】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥统计每…

【Java笔试强训 16】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、判断题 🔥完全数计…

JAVA入坑之JAVADOC(Java API 文档生成器)与快速生成

目录 一、JAVADOC(Java API 文档生成器) 1.1概述 1.2Javadoc标签 1.3Javadoc命令 1.4用idea自带工具生成API帮助文档 二、IDEA如何生成get和set方法 三、常见快捷方式 3.1快速生成main函数 3.2快速生成println()语句 3.3快速生成for循环 3.4“…

【Python】序列类型①-列表

文章目录 1. 前言2. 列表的定义3. 列表的下标访问3.1 嵌套列表的下标 4. 列表的切片操作5. 列表的遍历5.1 使用for循环进行遍历5.2 while循环进行遍历 6.添加列表元素6.1 使用append方法添加元素6.2 使用insert方法添加元素 7. 列表的拼接7.1 使用 进行拼接7.2 使用extend 进行…

( 字符串) 696. 计数二进制子串 ——【Leetcode每日一题】

❓696. 计数二进制子串 难度:简单 给定一个字符串 s,统计并返回具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是成组连续的。 重复出现(不同位置&#xff09…

动态规划01背包问题

01背包问题 假设你是一名经验丰富的探险家,背着背包来到野外进行日常探险。天气晴朗而不燥热,山间的风夹杂着花香,正当你欣赏这世外桃源般的美景时,突然,你发现了一个洞穴,这个洞穴外表看起来其貌不扬&…

UE动画状态机的事件触发顺序测试

正常A状态过渡到B状态的事件顺序: 整个流程为: 调用B状态的On Become Relevant事件调用B状态的On Update事件调用A状态的Left State Event事件调用B状态的Entered State Event事件调用B状态的Start Transition Event事件调用B状态的End Transition Even…

网络安全:通过445端口暴力破解植入木马。

网络安全:通过445端口暴力破解植入木马。 木马制作工具,如:灰鸽子等等 445端口是文件共享端口。可以进入对方文件硬盘进行植入木马: 使用文件共享进入对方磁盘: 在cmd输入net use \\x.x.x.x\ipc$ 之后会让你输入账号…

Vue——组合式函数

目录 什么是“组合式函数”?​ 鼠标跟踪器示例​ 异步状态示例​ 约定和最佳实践​ 命名​ 输入参数​ 返回值​ 副作用​ 使用限制​ 通过抽取组合式函数改善代码结构 选项式 API 中使用组合式函数​ 与其他模式的比较​ 和 Mixin 的对比​ 和无渲染…

mybatis逆向生成器

目录 官网xml pom引入 在resources新建generatorConfig.xml xml修改 生成 官网xml MyBatis Generator Core – MyBatis Generator XML Configuration File Reference pom引入 <!-- mybatis逆向生成器 --><dependency><groupId>org.mybatis.gener…

anaconda 共享虚拟环境

需求背景 A,B,C… 多台服务器。 有一个公共的NAS服务器N&#xff0c;存储所有数据资料。 N分别挂载到A,B,C…服务器上&#xff0c;便于所有服务器访问数据。 挂载路径在所有服务器上统一为/nas/。 现状&#xff1a; A,B,C&#xff0c;… 上分别安装anaconda&#xff0c;分别创…

网络钓鱼仍然是安全行业的祸害

随着网络犯罪分子采用更先进的方法&#xff0c;网络钓鱼诈骗继续构成重大风险。 根据 Zscaler 最新发布的 2023 ThreatLabz 网络钓鱼报告&#xff0c;随着网络钓鱼工具包和ChatGPT等人工智能 (AI) 工具的广泛使用&#xff0c;网络犯罪分子比以往任何时候都更容易创建有针对性的…