我正在使用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分数的含义是什么?从上述值可以得出什么结论?另外,这些值是否反映了我的分类器的任何内容?
答案 0 :(得分:2)
Recall 反映了给定类的多少个示例被标记为该类的。 精确度反映了分类器标记为该类的多少示例实际上是该类的示例。
假设您有两个课程neg
和pos
。如果您现在将所有的示例标记为类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
的示例,这意味着您将接受稍微偏斜的数据集培训。平衡这些数字也可以带来更平衡的回忆。
进一步阅读: