当前位置: 首页 > news >正文

scikit-learn 1.3.X 版本 bug - F1 分数计算错误


如果您正在使用 scikit-learn 1.3.X 版本,在使用 f1_score()classification_report() 函数时,如果参数设置为 zero_division=1.0zero_division=np.nan,那么函数的输出结果可能会出错。错误的范围可能高达 100%,具体取决于数据集中的类别数量。这个错误可能会显著地影响到多分类问题中常用的宏平均 F1 指标,从而可能导致对分类器性能的误判,甚至可能带来一些安全风险。

scikit-learn releases 页面:https://github.com/scikit-learn/scikit-learn/releases

在这里插入图片描述

F1 分数的定义:查准率是指预测结果中,每个类别预测正确的比例。召回率则是指样本标签中,每个类别被正确预测的比例。两者的分母不同,查准率的分母是预测结果的样本数,召回率的分母是样本标签的样本数。F1 分数是查准率和召回率的调和平均值

问题原因:在计算 F1 分数时,如果某个类别的查准率和召回率都为 0,那么根据 zero_division 参数的设定,F1 分数可能被赋值为 1.0 或 np.nan,而非正确的 0.0。

检测这个错误的方法:如果想要确定某个 F1 分数计算是否受到这个错误的影响,可以先使用 classification_report() 函数进行 F1 分数的计算。如果存在任何一个类别的查准率和召回率都为 0,而对应的 F1 分数为 1.0 或 nan,那么这个 F1 分数的计算就是错误的。

解决办法:

  • 请升级到已发布的 scikit-learn 1.4.0 或更高版本,该版本已修复了这个 bug。
  • 另一种解决方案是降级到 scikit-learn 1.2.2 版本,或者设置 zero_division 参数为 0.0。但要注意了解这一参数变化将如何影响查准率吧、召回率和 F1 分数!

在这里插入图片描述


📚️ 参考链接:

  • Connor Boyle’s Website - Scikit-Learn’s F-1 calculator is broken
  • 网友指出 sklearn 版本 bug,你的实验结果很可能是错的。。。

相关文章:

  • nginx stream proxy 模块的ssl连接源码分析
  • VLAN间通信
  • Redis篇之缓存雪崩
  • OpenAI研究揭示:ChatGPT对生物武器制造影响有限
  • PKI - 04 证书授权颁发机构(CA) 数字证书
  • Leetcode 322 零钱兑换
  • Hadoop搭建(完全分布式)
  • TI的电量计驱动在卸载时导致Linux卡死
  • C++ dfs搜索枚举(四十九)【第九篇】
  • Spark安装(Yarn模式)
  • WebAssembly002 FFmpegWasmLocalServer项目
  • 单选全选功能实现
  • k8s弃用docker后使用ctr导入镜像
  • 代码随想录算法训练营29期|day43 任务以及具体任务
  • leetcode-hot100树的专题
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [译] React v16.8: 含有Hooks的版本
  • [译]如何构建服务器端web组件,为何要构建?
  • AWS实战 - 利用IAM对S3做访问控制
  • es6
  • ES6 ...操作符
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Quartz初级教程
  • React Transition Group -- Transition 组件
  • Ruby 2.x 源代码分析:扩展 概述
  • Shell编程
  • 程序员最讨厌的9句话,你可有补充?
  • 给新手的新浪微博 SDK 集成教程【一】
  • 关于使用markdown的方法(引自CSDN教程)
  • 前端存储 - localStorage
  • 前端面试题总结
  • 如何在GitHub上创建个人博客
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 用mpvue开发微信小程序
  • 积累各种好的链接
  • 如何正确理解,内页权重高于首页?
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #14vue3生成表单并跳转到外部地址的方式
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (C++20) consteval立即函数
  • (zt)最盛行的警世狂言(爆笑)
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (层次遍历)104. 二叉树的最大深度
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (十) 初识 Docker file
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • ./configure、make、make install 命令
  • .Net 6.0 处理跨域的方式
  • .NET Framework .NET Core与 .NET 的区别
  • .NET/C# 的字符串暂存池
  • .NET开发人员必知的八个网站
  • .NET实现之(自动更新)
  • .Net组件程序设计之线程、并发管理(一)
  • /etc/sudoer文件配置简析
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法