如何解读 scikit-learn 的分类报告?

数据挖掘 分类 公制 二进制
2021-10-06 22:53:32

在此处输入图像描述

如您所见,它是关于线性SVC 的二元分类。1 类比 0 类具有更高的精度(+7%),但 0 类比 1 类具有更高的召回率(+11%)。你会如何解释这个?

还有另外两个问题:“支持”代表什么?sklearn.metrics.precision_score分类报告中的准确率和召回率分数与或的结果相比是不同的recall_score为什么呢?

2个回答

分类报告是关于分类问题中的关键指标的。

您将获得精确度、召回率、f1 分数和对您尝试查找的每个课程的支持。

  • 召回意思是“你在这个类的元素总数中找到了多少这个类”

  • 精度将是“该类别中有多少被正确分类”

  • f1-score是准确率和召回率之间的调和平均值

  • 支持是数据集中给定类的出现次数(因此您有 37.5K 的 0 类和 37.5K 的 1 类,这是一个非常平衡的数据集。

问题是,精度和召回率被高度用于不平衡的数据集,因为在高度不平衡的数据集中,99% 的准确率可能毫无意义。

我会说你真的不需要查看这些指标来解决这个问题,除非绝对正确地确定给定的类。

要回答您的另一个问题,您无法比较两个类别的精度和召回率。这仅意味着您的分类器最好找到类 0 而非类 1。

准确率和召回率sklearn.metrics.precision_scorerecall_score应该不同。但是只要不提供代码,这是不可能确定其根本原因的。

我们可以想象 Precision 和 Recall 是如何捕捉到一大群鱼的。

想象一下,我们在海上划船并放下我们的网。

  • 如果鱼群很大,而网很小-> 我们会在网中的非常位置看到鱼,这意味着精度很高但是我们只得到了一小部分的驱动,这意味着召回率很低

  • 同时,只有一小群鱼,但我们得到了一张巨大的网-> 我们会看到只有一小部分网有鱼,这意味着精度低但幸运的是,我们在驱动器中捕获了每条鱼,意味着召回率很高