用python计算准确率_机器学习之分类:准确率

准确率是一个用于评估分类模型的指标。通俗来说,准确率是指我们的模型预测准确的结果所占的比例。正式点说,准确率的定义如下:

Accuracy = \dfrac{Number of correct predictions}{Total number of predictions}

对于二元分类,也可以根据正类别和负类别按如下方式计算准确率:

Accuracy = \dfrac{TP + TN}{TP + TN + FP + FN}

其中,TP = 真正例,FP = 假正例,FN = 假负例。

让我们来试着计算一下以下模型的准确率,该模型将 100 个肿瘤分为恶性(正类别)或良性(负类别):

用python计算准确率_机器学习之分类:准确率_第1张图片

Accuracy = \dfrac{TP + TN}{TP + TN + FP + FN} \\{}\\= \dfrac{1 + 90}{1 + 90 + 1 + 8} = 0.91

准确率为 0.91,即 91% (总共 100 个样本中有 91 个预测正确)。这表示我们的肿瘤分类器在识别恶性肿瘤方面变现的非常出色,对吧?

实际上,只要我们仔细分析一下正类别和负类别,就可以更好地了解我们模型的效果。

在 100 个肿瘤样本中,91 个为良性(90个 TN 和 1 个 FP),9 个为恶性(1个 TP 和 8 个FN)。

在 91 个良性肿瘤中,该模型将 90 个正确识别为良性。这很好。不过,在 9 个恶性肿瘤中,该模型仅将一个正确识别为恶性。这是多么可怕的结果!9 个恶性肿瘤中有 8 个未被诊断出来!

虽然 91% 的准确率可能乍一看还不错,但如果另一个肿瘤分类器模型总是预测良性,那么这个模型使用我们的样本进行预测也会实现相同的准确率(100 个中有 91 个预测正确)。换言之,我们的模型与那些没有预测能力来区分恶性肿瘤和良性肿瘤的模型差不多。

当您使用分类不平衡的数据集(比如正类别标签和负类别标签的数量之间存在明显差异)时,单单准确率一项并不能反映全面情况。

在下一部分中,我们将介绍两个能够更好地评估分类不平衡问题的指标:精确率和召回率。

本作品采用《CC 协议》,转载必须注明作者和本文链接

Hacking

你可能感兴趣的:(用python计算准确率)