我正在使用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 回答
Recall反映了给定类的多少个例子被标记为属于该类 . 精确度反映了分类器标记为该类的实例数是该类的实例 .
假设你有两个类
neg
和pos
. 如果您现在将所有示例标记为类neg
,那么您对neg
的回忆将会很好,为1.00或100%,因为每当一个示例为neg
类时,您将其标记为neg
. 同时召回pos
将是可怕的,因为没有一个类pos
被标记为pos
. 另外,neg
的精度会很差,因为很多标记为neg
的例子都是pos
.相反,只有当您完全确定它们属于类
neg
时,您才可以给出标签neg
. 那么你很可能回忆neg
会很可怕,因为你几乎没有抓到任何一个例子 . 但是你的精确度会很高,因为(几乎)所有被标记为neg
的例子都是neg
类 .因此:将所有内容标记为A类将导致A类的高召回率,但精度不高 . 几乎没有任何标记为A类标记通常会导致低调用,但A类高精度 .
同时列出的F1-Score只是召回和精确度的合并 . 如果你的F1得分很高,那么回忆和精确度往往都很好 . 如果它很低那么你的召回和精确度往往很差 .
根据您的示例值,您可以推导出您的分类器表现通常不会太差,F1分数为0.83 .
neg
的召回与其他值相比有点低,因此您的分类器在查找neg
的示例时会出现问题,而是将其标记为pos
(这会降低pos
的精度) . 如果这些是您的培训结果而不是测试集,那么支持值的差异表明您有更多pos
的示例而不是neg
,这意味着您将接受稍微偏斜的数据集培训 . balancer 这些数字也可以使召回更加 balancer .进一步阅读:
Wikipedia about recall and precision
Stanford summary of recall and precision
scikit documentation of the function sklearn.metrics.precision_recall_fscore_support