【sklearn报错解决方案】UndefinedMetricWarning: Precision is ill-defined and being set to 0.0
出错描述
使用sklearn.metrics.precision_score
计算精确率时,出现报错:UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in samples with no predicted labels.
问题原理分析
精确率计算的是所有样本的平均精确率。而对于每个样本来说,精确率就是预测正确的标签数在整个预测为正确的标签数中的占比。其计算公式为:
例如对于某个样本来说,其真实标签为[0, 1, 0, 1],预测标签为[0, 0, 0, 0]。那么该样本对应的精确率就应该为:(0 + 1 + 0 + 0) / (0 + 0 + 0 + 0),这时就会报错。
情况一
假设有数据:样本数batch_size = 5
,标签数label_num = 4
。y_true
为真实标签,y_pred
为预测标签值。
y_true = np.array([[0, 1, 0, 1],[0, 1, 1, 0],[0, 0, 1, 0],[1, 1, 1, 0],[1, 0, 1, 1]])y_pred = np.array([[0, 1, 1, 0],[0, 1, 1, 0],[0, 0, 1, 0],[0, 1, 1, 0],[0, 1, 0, 1]])
对照上面给的数据y_true
、y_pred
。那么该样本对应的准确率就应该为:
15∗(12+22+11+22+12)=0.8\frac{1}{5} * (\frac{1}{2} + \frac{2}{2} + \frac{1}{1} + \frac{2}{2} + \frac{1}{2})= 0.851∗(21+22+11+22+21)=0.8
情况二
假设数把y_pred
的某一行改为全0,数据如下。
y_true = np.array([[0, 1, 0, 1],[0, 1, 1, 0],[0, 0, 1, 0],[1, 1, 1, 0],[1, 0, 1, 1]])y_pred = np.array([[0, 1, 1, 0],[0, 1, 1, 0],[0, 0, 1, 0],[0, 1, 1, 0],[0, 0, 0, 0]])
对照上面给的数据y_true
、y_pred
。那么该样本对应的准确率就应该为:
15∗(12+22+11+22+0)=0.7\frac{1}{5} * (\frac{1}{2} + \frac{2}{2} + \frac{1}{1} + \frac{2}{2} + 0)= 0.751∗(21+22+11+22+0)=0.7
情况三
假设数把y_pred
改为全0,数据如下。
y_true = np.array([[0, 1, 0, 1],[0, 1, 1, 0],[0, 0, 1, 0],[1, 1, 1, 0],[1, 0, 1, 1]])y_pred = np.array([[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]])
对照上面给的数据y_true
、y_pred
。那么该样本对应的准确率就应该为:
15∗(0+0+0+0+0)=0.0\frac{1}{5} * (0 + 0 + 0 + 0 + 0 )= 0.051∗(0+0+0+0+0)=0.0
【注】所以如果有除数为0,sklearn中会默认把数值置为0来计算。
解决办法
直接忽略警告即可。
import warnings
warnings.filterwarnings("ignore")
【注】一般一个batch_size都会在32-128,所以有个别样本的精确率为0,最后取平均也还能接收,直接忽略警告就行。
【sklearn报错解决方案】UndefinedMetricWarning: Precision is ill-defined and being set to 0.0相关推荐
- 报错分析:Precision and F-score are ill-defined for being 0.0 in labels with no predicted samples
NLP情感分析任务报错如下 UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in ...
- 安装 sklearn 报错 ImportError: cannot import name Type
1. 安装 sklearn sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple sklearn 会默认安装 joblib , s ...
- TFS 报错解决方案:tf400324
TFS 报错解决方案:tf400324 参考文章: (1)TFS 报错解决方案:tf400324 (2)https://www.cnblogs.com/xiaz/p/7443805.html 备忘一下 ...
- vue-cli打包构建时常见的报错解决方案
vue-cli打包构建时常见的报错解决方案 参考文章: (1)vue-cli打包构建时常见的报错解决方案 (2)https://www.cnblogs.com/bester-ace/articles/ ...
- kali linux 安装 Mysql Can‘t read from messagefile 报错解决方案
kali linux 安装 Mysql Can't read from messagefile 报错解决方案 参考文章: (1)kali linux 安装 Mysql Can't read from ...
- CentOS 6安装Oracle报错解决方案
CentOS 6安装Oracle报错解决方案 参考文章: (1)CentOS 6安装Oracle报错解决方案 (2)https://www.cnblogs.com/lonecloud/p/689568 ...
- IDEA配置maven报错解决方案
IDEA配置maven报错解决方案 参考文章: (1)IDEA配置maven报错解决方案 (2)https://www.cnblogs.com/7758521gorden/p/8778496.html ...
- yum安装出现Error: Package: glibc-headers-2.17-157.el7.x86_64 (centos7.3)类似报错解决方案
yum安装出现Error: Package: glibc-headers-2.17-157.el7.x86_64 (centos7.3)类似报错解决方案 参考文章: (1)yum安装出现Error: ...
- 项目pom.xml第一行报错解决方案
项目pom.xml第一行报错解决方案 参考文章: (1)项目pom.xml第一行报错解决方案 (2)https://www.cnblogs.com/wantfly/p/9307476.html 备忘一 ...
最新文章
- sdut 2136 数据结构实验之二叉树的建立与遍历
- BootStrapStudio文档阅读笔记-Getting Started Guide解析
- 解决Windows下运行出现ModuleNotFoundError: No module named xxx问题
- 智课雅思短语---二、exert positive/ negative effects on…
- git detached head
- 编写一个程序,从10亿个数字的数组中找出100个最大的数字
- 携程第二场预赛 1003:位图像素的颜色(水题,判断点是否在矩形内)
- Vue如何通过代理解决跨域问题
- 理解 this.initialize.apply ( this, arguments )
- iOS内购-防越狱破解刷单
- Windows10 笔记本从睡眠状态唤醒时取消输入密码的方法
- 前端上传图片并修改名字(数据库的图片名字,并非原图片名字)
- 如何禁止计算机自动安装驱动,win10系统禁止自动安装驱动的详细技巧
- 编写各种outofmemory/stackoverflow程序
- Final Cut Pro如何安装自定义lut?final cut pro的lut安装在哪个文件夹?
- Ubuntu 22.04 LTS root登录、修改当前用户名和主机名
- 什么是云服务器ECS?云服务器ECS详解
- 布林通道 Bollinger Bands——非炒股向个人学习笔记
- 基于国产 ARM + FPGA+Codesys运动控制平台的智能人机交互系统设计
- 面向对象编程---上
热门文章
- 这款颜值爆表的数据可视化神器,我可以用到2030年
- HTC VIVE Tracker的二次开发(实际操作篇)附软件
- 【a101】高精度实数加法
- Linux命令行补全工具github,命令行提示工具 navi
- 用python3实现简单的语音识别转化成文字
- 公安摧毁6款淫秽漫画APP,查冻涉案资金5100余万元
- 温度传感器php,温度传感器基础知识介绍
- 创建oracle视图的权限不足,Oracle创建视图view权限不足问题剖析
- e1载波的数据速率是_电力公司常用抄表方案 电力载波抄表系统
- z370 raid linux,华硕Z370A主板RAID怎么设置?用的是两个...-卓优商学院问答