当前位置: 首页 > 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,你的实验结果很可能是错的。。。
http://www.lryc.cn/news/296208.html

相关文章:

  • Python面试题19-24
  • 《Django+React前后端分离项目开发实战:爱计划》 01 项目整体概述
  • 从零开始 TensorRT(4)命令行工具篇:trtexec 基本功能
  • 基于SpringBoot+Vue的校园博客管理系统
  • 基于 SpringBoot 和 Vue.js 的权限管理系统部署教程
  • Redis篇之集群
  • JUnit 5 注解总结与解析
  • CSS综合案例4
  • WifiConfigStore初始化读取-Android13
  • 【Spring源码解读!底层原理进阶】【下】探寻Spring内部:BeanFactory和ApplicationContext实现原理揭秘✨
  • 从零开始手写mmo游戏从框架到爆炸(六)— 消息处理工厂
  • Go基础学习笔记-知识点
  • jvm几个常见面试题整理
  • ReentrantLock 和 公平锁
  • 使用Postman做API自动化测试
  • 入门指南|Chat GPT 的兴起:它如何改变数字营销格局?
  • 【C#】.net core 6.0 创建默认Web应用,以及默认结构讲解,适合初学者
  • Linux中的numactl命令指南
  • AD域国产替代方案,助力某金融企业麒麟信创电脑实现“真替真用”
  • 抽象springBoot报错
  • Linux的打包压缩与解压缩---tar、xz、zip、unzip
  • 在angular12中proxy.conf.json中配置详解
  • PyTorch 中音频信号处理库torchaudio的详细介绍
  • OpenAI研究揭示:ChatGPT对生物武器制造影响有限
  • IntelliJ IDEA 2023.3发布,AI 助手出世,新特性杀麻了!!
  • async 与 await(JavaScript)
  • GPT-1, GPT-2, GPT-3, GPT-3.5, GPT-4论文内容解读
  • 第62讲商品搜索动态实现以及性能优化
  • 我的PyTorch模型比内存还大,怎么训练呀?
  • HTTP协议笔记