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

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,你的实验结果很可能是错的。。。

http://www.kler.cn/a/228073.html

相关文章:

  • 2025 春节联欢晚会魔术揭秘
  • shell脚本
  • Vue.js组件开发-实现下载时暂停恢复下载
  • 层次聚类构建层次结构的簇
  • gesp(C++六级)(6)洛谷:P10109:[GESP202312 六级] 工作沟通
  • 构建 QA 系统:基于文档和模型的问答
  • 【MATLAB源码-第135期】基于matlab的变色龙群优化算法CSA)机器人栅格路径规划,输出做短路径图和适应度曲线。
  • 跟着cherno手搓游戏引擎【20】混合(blend)
  • 全流程机器视觉工程开发(四)PaddleDetection C++工程化应用部署到本地DLL以供软件调用
  • 线性表 —— 数组、栈、队、链表
  • 【SparkML实践7】特征选择器FeatureSelector
  • Redis实现:每个进程每30秒执行一次任务
  • Tomcat组件架构与数据流
  • 04.PostgreSQL多表查询
  • ffmpeg的使用,安装,抽帧,加水印,截图,生成gif,格式转换,抓屏等
  • 简单介绍Spring Security 的认证机制和授权机制
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Menu组件
  • Leetcode—38. 外观数列【中等】
  • 微信小程序编译出现 project.config.json 文件内容错误
  • 什么是java程序的主类,应用程序主类和小程序主类有什么不同?
  • 机器学习之指数分布
  • 【已解决】c++ qt选中该行为什么该列部分变色
  • 51单片机实验课二
  • 商业智能(BI)数据分析、挖掘概念
  • python 爬虫安装http请求库
  • 修复wordpress安全漏洞