【问题标题】:Precision and recall of 1精度和召回率 1
【发布时间】:2023-04-07 03:54:01
【问题描述】:

我正在解决使用 DNN 的问题。有 2 个输入变量(分类)和 1 个目标变量(二进制)。测试数据的准确率为99.95%。我做了交叉验证(10折),准确率是99.96(+- 0.05)。

在我的结果中,我看到了 1.0 的准确率和召回率。我在这里附上了混淆矩阵和分类报告的图片。

第一季度。 这种行为可以吗?

第二季度。当我使用相同的参数再次运行相同的模型时,我每次都会得到不同的混淆矩阵,但准确度始终接近 99。

【问题讨论】:

  • 我不确定您的问题到底是什么。如果你的程序是正确的,那么结果应该是正确的。您的混淆矩阵不是绝对完美的,但它们足够接近,以至于当以两位数精度打印时,指标会变成一个。每次运行的结果都非常正常,因为除非您修复随机种子,否则权重初始化和训练顺序通常会有所不同。

标签: python tensorflow keras classification


【解决方案1】:

首先,你确实没有有一个纯 1.00 precision and recall;这只是报告的数字,四舍五入到小数点后两位。正如您已经说过的,您的测试准确度和交叉验证准确度都远远超过 99.5%,这是四舍五入到 1.00 的阈值。只要你的实验错误率低于 2000 年的一分之一,你就会得到这个。

这引出了一个问题,一个训练有素的模型具有如此高的准确度是否合理:是的,是的。潜在的准确性取决于数据集中的信息可分离性:是否甚至可能为给定数据提取可分离空间?就输出是输入的(确定性)函数而言,您的模型可以达到 100% 的准确度。您只需拥有一个(几乎)可能的数据集。

清楚吗?

【讨论】:

  • 感谢您的解释。但是变化的混淆矩阵呢?每次我运行模型时,混淆矩阵都会发生变化,有时 FN 的数量很高,有时 FT 很高。这是因为我每次在运行模型之前都会重新洗牌数据集吗?
  • 是的,数字会发生变化,因为您使用的是不同的数据。仅仅以不同的顺序呈现相同的观察结果会改变训练。不同的模型初始化会改变训练。
猜你喜欢
  • 2012-11-26
  • 2014-02-20
  • 1970-01-01
  • 2018-02-18
  • 2011-11-01
  • 2018-08-16
  • 2011-08-18
  • 1970-01-01
  • 2012-09-14
相关资源
最近更新 更多