分类器报告在scikit-learn中告诉我们什么?

时间:2015-04-11 14:59:03

标签: scikit-learn

我正在使用skikit-learn进行文本分类。当我使用classification_report()函数时,它返回了下表:

                precision  recall   f1-score   support

        neg       0.86      0.69      0.77       351
        pos       0.82      0.92      0.87       517

avg / total       0.83      0.83      0.83       868

精确度,召回率和f1分数的含义是什么?从上述值可以得出什么结论?另外,这些值是否反映了我的分类器的任何内容?

1 个答案:

答案 0 :(得分:2)

Recall 反映了给定类的多少个示例被标记为该类的。 精确度反映了分类器标记为该类的多少示例实际上是该类的示例。

假设您有两个课程negpos。如果您现在将所有的示例标记为类neg,那么您对neg的回忆将会非常好,即1.00或100%,因为每当一个示例是类的时候neg您将其标记为neg。与此同时,对pos的回忆会很糟糕,因为没有一个类pos的例子被标记为pos。此外,neg的精确度会很差,因为很多标记为neg的示例都是pos

相反,只有在您完全确定它们属于类neg时,才可以给出标签neg。那么你对neg的回忆很可能是可怕的,因为你几乎没有抓住任何neg例子。但是,您的精确度会很高,因为(几乎)所有标记为neg的示例都属于neg类。

所以:将所有标记为A类将导致A类的高召回率,但精度不高。几乎没有任何标记为A类标记通常会导致低回忆,但A类高精度。

列出的 F1-Score 只是召回和精确的合并。如果你的F1得分很高,那么回忆和精确度往往都很好。如果它很低,那么你的召回和精确度往往很差。

根据您的示例值,您可以推导出您的分类器表现通常不会太差,F1分数为0.83。 neg的召回与其他值相比有点低,因此您的分类器在查找neg的示例时遇到问题,并将其标记为pos(这会降低pos的精度1}})。如果这些是您的培训结果而不是测试集,那么支持值的差异表明您有pos的示例而不是neg的示例,这意味着您将接受稍微偏斜的数据集培训。平衡这些数字也可以带来更平衡的回忆。

进一步阅读: