如何修复此分类报告警告?

2024-02-03

我创建了一个多类分类模型。一切都很顺利,验证准确度为 84%,但当我打印分类报告时,我收到了此警告:

 UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))

分类报告:

              precision    recall  f1-score   support

           0       0.84      1.00      0.91     51890
           1       0.67      0.04      0.08      8706
           2       0.00      0.00      0.00      1605

    accuracy                           0.84     62201
   macro avg       0.50      0.35      0.33     62201
weighted avg       0.79      0.84      0.77     62201

源代码 -

import pandas as pd

df=pd.read_csv('Crop_Agriculture_Data_2.csv')
df=df.drop('ID',axis=1)

dummies=pd.get_dummies(df[['Crop_Type', 'Soil_Type', 'Pesticide_Use_Category', 'Season']],drop_first=True)
df=df.drop(['Crop_Type', 'Soil_Type', 'Pesticide_Use_Category', 'Season'],axis=1)
df=pd.concat([df,dummies],axis=1)

df['Crop_Damage']=df['Crop_Damage'].map({'Minimal Damage':0,'Partial Damage':1,'Significant Damage':2})

x=df.drop('Crop_Damage',axis=1).values
y=df.Crop_Damage.values
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,train_size=0.3,random_state=101)

from sklearn.preprocessing import MinMaxScaler
mms=MinMaxScaler()
x_train=mms.fit_transform(x_train)
x_test=mms.transform(x_test)

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Dropout,Flatten

model=Sequential()
model.add(Flatten())
model.add(Dense(10,activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(6,activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(3,activation='softmax'))

model.compile(loss='sparse_categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(x_train,y_train,validation_data=(x_test,y_test),epochs=13)

import numpy as np
pred=np.argmax(model.predict(x_test),axis=-1)

from sklearn.metrics import classification_report
print(classification_report(y_test,pred))

我认为这可能是因为大多数数据都属于一个类别,但我不确定。我能做些什么来解决这个问题吗?


As 荒野人说,你有一个warning,不是错误。

此警告是在告诉您classification_report输出受到影响,因为从未为您的模型预测标签之一(在您的情况下,标签“2”)。

这会产生计算精度的问题(除以 0), 因为 (true positives + false positives =0)。当函数处理这个问题时,自动输出0。注意这不是真正的值,它应该是“未定义”或类似的东西,但这是他的方法。正如您所看到的,当您计算宏平均值时,您使用的是计算出的 0。因此该错误只是提醒您宏平均值受到“假”0 的影响。

F1-score 也是如此,因为它是从 Precision 开始计算的。

怎么解决呢?好吧,从技术上讲,你没有什么需要解决的,因为这不是一个错误,所以你可以处理它。但你必须意识到你的输出正在受到影响。

您可以做的是确定您对未预测的标签的分数不感兴趣,然后明确指定您感兴趣的标签(至少预测过一次的标签):

print(classification_report(y_test,pred,labels=np.unique(y_pred))

请注意,这个解决方案根本不好,因为它隐藏了模型和数据的问题,但在某些情况下它可能很有用。

此外,作为Yefet说,你的模型似乎对标签“2”进行分类有问题,因为你有不平衡的数据。如果可以的话,遵循他的建议并改进你的模型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复此分类报告警告? 的相关文章

随机推荐

  • 调用 Time.In 时缺少位置

    当我使用beego orm操作postgresql数据库时 出现这样的错误 调用Time In时缺少位置 代码示例 type dataTest struct Id int pk auto Data time Time orm auto no
  • CodeIgniter + WordPress 集成

    我的网站是用 WordPress 设计的 一些主题页面有一个用于预订的定制 PHP 脚本 我想在 CodeIgniter 中重构它 以获得更大的灵活性 问题 1 如何通过CI的路由系统使用WP中的CI功能 我是否必须制作一个 CI 页面 i
  • 为什么 Swift 中的公共类/结构需要显式公共初始值设定项?

    考虑模块中的以下类 也同样适用于结构体 public class Foo public func bar method body 注意 它没有显式的初始化器 这个例子不需要任何特殊的初始化 该类将暴露给其他模块 因为它被标记为public
  • 删除匹配字符之后的所有字符

    我有一个包含很多行的文件 http example com part 1 this number 1 one http example com part 2 this is number 21 two http example com pa
  • 使用gRPC共享非常大的文件

    我想使用 gRPC 在端点和服务器之间共享非常大的文件 超过 6GB 我当前工作的项目需要一个中央服务器 端点可以在其中上传和下载文件 限制之一是端点彼此不认识 但它们可以从公共总线相互接收和发送消息 为了实现该服务器及其与端点的通信 我正
  • 如何从mongodb中检索数据并显示在ejs页面中?

    我已经向 mongodb 添加了数据 我正在使用猫鼬 我想从 mongodb 数据库获取数据并将其显示在 ejs 页面中 我在互联网上搜索了很多 但在尝试这些时遇到错误 我不明白错误是什么 这是我最近尝试过的 猫鼬模式 var mongoo
  • 在seaborn中绘制多个箱线图

    我想在 pandas 中使用 seaborn 绘制箱线图 因为这是一种更好的可视化数据的方式 但我不太熟悉它 我有三个不同指标的数据帧 我想比较不同的指标 我将循环遍历文件路径来访问它们 for path in paths df pd re
  • 参数数量未知的 C++ 函数指针

    我需要一些关于 C 的帮助 拜托 我正在为一个基于文本的小型游戏编写命令解析器 但遇到了一些问题 解析器应该读取并解析玩家输入的命令 最明显 最直接的解决方案可能是这样的 用伪代码编写 command lt read input from
  • Emacs:组织模式电子表格:通过 hline 定位

    我正在尝试在组织模式下记录我的时间 Bob Johnson Bob s SEO subject time minutes total hours optimization report 2011 07 11 8 10 00 PM PST 1
  • 如何编译适用于 Windows 的 Prometheus UI 静态二进制文件?

    我在尝试着从 Windows 上的 Grafana 访问 GCP 托管 Prometheus 指标 https stackoverflow com q 74563137 20592222 为此我需要为 Prometheus UI 前端编译一
  • 为高度倾斜的数据生成直方图

    我在用着dc js crossfilter js and d3 js生成条形图 条形图表示信用卡交易的数据 它绘制了交易数量 y 轴 与交易金额 x 轴 的关系 它看起来像这样 数据数组基本上如下所示 txn id 1 txn amount
  • WMI 与 Windows API

    使用该方法有任何优点或缺点WMI http msdn microsoft com en us library aa394582 28VS 85 29 aspx代替视窗应用程序接口 http msdn microsoft com en us
  • GitHub Enterprise 中的 GitHub 操作在 npm 包上提供 401 和 404

    我在用语义版本动作 https github com cycjimmy semantic release action在我的 GitHub 企业存储库上 直到最近它工作得很好 但开始失败这个错误 https github com cycji
  • 在 Typescript 中使用接口或类时[重复]

    这个问题在这里已经有答案了 我有一个简单的登录场景 需要用户在 Typescript 中输入电子邮件和密码 我需要创建某种类型来获取强类型并将其发送到后端 是否应该写成 export interface UserLogin email st
  • 将 git 存储库链接到多个 TFS 项目

    我有一个 git 存储库 需要作为共享库 通用代码在多个其他项目之间共享 使用此通用代码的项目都是TFS项目 TFS2013 我能够在 TFS 中托管 git 存储库 但无法弄清楚如何在不重复的情况下将 git 和 TFS 存储库链接在一起
  • 在 OS X 下的 PyCharm 上运行 GAE GCS,运行时错误“没有名为 cloudstorage 的模块”

    我正在尝试将 Google Cloud Storage 功能添加到已经运行且具有重要功能的 Python GAE 应用程序中 我的开发计算机完全在 PyCharm 中工作 该计算机是运行 OS X 10 9 5 的 Mac 我创建了一个新的
  • php foreach echo 打印“Array”作为值

    也许我只是无法理解 php 如何处理数组 我正在尝试使用 foreach 循环打印出一个数组 我能从中得到的似乎只有 数组 这个词 br 这会打印出以下内容 Array 我无法理解为什么会出现这种情况 如果我像上面一样预先定义一个数组 它将
  • Django:“unicode”对象没有属性“tzinfo”。仅生产服务器

    我很困惑 通过我的本地设置 python manage py runserver 一切运行正常 通过我的生产设置 wsgiserver CherryPyWSGIServer 我得到 unicode object has no attribu
  • GoogleCloudMessaging - InstanceID.getInstance(),从客户端注册

    我对 Java 编程和一般编程还很陌生 现在我决定制作自己的应用程序 该应用程序应该利用 Google Cloud Messaging 不知怎的 我成功了 但后来我意识到我使用了方法 String regid gcm register PR
  • 如何修复此分类报告警告?

    我创建了一个多类分类模型 一切都很顺利 验证准确度为 84 但当我打印分类报告时 我收到了此警告 UndefinedMetricWarning Precision and F score are ill defined and being