Scikit-Learn提供了几个计算分类器指标的函数,包括准确率/精度和召回率:

>>> from sklearn.metrics import precision_score, recall_score
>>> precision_score(y_train_5, y_pred) # == 4344 / (4344 + 1307)
0.76871350203503808
>>> recall_score(y_train_5, y_train_pred) # == 4344 / (4344 + 1077)
0.79136690647482011

现在你的5-检测器看起来不像你刚开始那样的精准了。当它声称一个图像代表的值是5时,它只有在77%的情况下是正确的。而如果所检测的图片是5的话,那么它成功检测的概率是79%(即召回率)。

将准确率/精度和召回率结合成一个单一的指标是很方便的,我们称高指标为:称为F1 score,特别是如果您需要一个简单的方法来比较两个分类器的时候。F1 score是准确率/精度和召回率的调和平均数[harmonic mean](方程3-3)。正规平均值对所有的值都是相等的,而调和平均数则给予低值更高的权重。因此,分类器只有在准确率/精度和召回率高的情况下才会得到一个高的F1 score。

方程3 - 3 F1 score

要计算F1score,只需调用f1_score()函数:

>>> from sklearn.metrics import f1_score
>>> f1_score(y_train_5, y_pred)
0.78468208092485547

F1 score倾向于具有精度和召回相仿的分类器。而这并不总是你想要的:在某些情况下,你最关心的是准确率/精度,在其他情况下,你真的很关心召回率。举个例子,如果你训练一个分类器来检测视频是否是少儿不宜的,你更倾向的分类器可能是拒绝了很多好的视频(低召回),但仅保留安全的视频(高准确率/精度),而不是一个有着很高的召回率导致一些非常不好的视频出现在你的产品中的分类器(在这种情况下,您甚至可能希望添加一个人工管道来检查分类器的视频选择)。另一方面,假设你训练一个分类器来检测监视图像上的商店扒手:如果你的分类器只有30%的精度,只要它有99%的召回率,那就很好了(当然,安全警卫会得到一些错误的警告,但是几乎所有的商店扒手都会被抓)。

不幸的是,你不能同时拥有这两种方法:提高精度就降低了召回率,反之亦然。这被称为精度/召回权衡[ precision/recall tradeoff]。

results matching ""

    No results matching ""