评分:计算各种性能指标

一个用于计算各种性能指标的函数。

from mlxtend.evaluate import scoring

概述

混淆矩阵

混淆矩阵(或错误矩阵)是总结二元分类任务分类器性能的一种方法。这个方阵由列和行组成,列出实例的绝对或相对数量,表示“实际类别”与“预测类别”的比例。

为类别 1 的标签,为第二类别或在多类别设置中非类别 1 的所有类别的标签。

错误率和准确率

预测错误率 (ERR) 和准确率 (ACC) 都提供了关于有多少样本被错误分类的一般信息。错误率可以理解为所有错误预测的总和除以总预测数,而准确率则计算为正确预测的总和除以总预测总数。

真阳性率和假阳性率

真阳性率 (TPR) 和假阳性率 (FPR) 是在类别不平衡问题中特别有用的性能指标。例如,在垃圾邮件分类中,我们当然主要关注垃圾邮件的检测和过滤。然而,减少被错误分类为垃圾邮件的消息数量(即假阳性)也很重要:漏掉重要消息的情况被认为比邮箱里有几封垃圾邮件的情况“更糟”。与 FPR 相比,真阳性率提供了关于从所有阳性样本中正确识别出的阳性(或相关)样本比例的有用信息。

精确率、召回率和 F1 分数

精确率 (PRE) 和召回率 (REC) 是在信息技术中更常用的指标,与假阳性率真阳性率相关。实际上,召回率真阳性率的同义词,有时也称为灵敏度。F-分数可以理解为精确率召回率的组合。

灵敏度和特异度

灵敏度 (SEN) 是召回率真阳性率的同义词,而特异度 (SPC)真阴性率的同义词——灵敏度衡量阳性样本的召回率,补充地,特异度衡量阴性样本的召回率。

Matthews 相关系数

Matthews 相关系数 (MCC) 由 Brian W. Matthews [3] 于 1975 年首次提出,用于评估蛋白质二级结构预测的性能。MCC 可以理解为二元分类设置中线性相关系数(Pearson's R)的一个特例,在类别不平衡的设置中尤其有用。之前的指标取值范围在 0(最差)到 1(最好)之间,而 MCC 的范围限制在 1(地面实况与预测结果完美相关)和 -1(逆相关或负相关)之间——值为 0 表示随机预测。

平均每类别准确率

“总体”准确率定义为所有样本 n 中正确预测(真阳性 TP 和 真阴性 TN)的数量

在二元类别设置中

在多类别设置中,我们可以将准确率的计算泛化为所有正确预测(对角线上的)占总样本数 n 的比例。

考虑一个有 3 个类别(C0, C1, C2)的多类别问题

假设我们的模型做出了以下预测

我们计算准确率如下

现在,为了计算平均每类别准确率,我们分别为每个类别标签计算二元准确率;也就是说,如果类别 1 是阳性类别,则类别 0 和 2 都被视为阴性类别。

参考文献

示例 1 - 分类错误

from mlxtend.evaluate import scoring

y_targ = [1, 1, 1, 0, 0, 2, 0, 3]
y_pred = [1, 0, 1, 0, 0, 2, 1, 3]
res = scoring(y_target=y_targ, y_predicted=y_pred, metric='error')

print('Error: %s%%' % (res * 100))
Error: 25.0%

API

scoring(y_target, y_predicted, metric='error', positive_label=1, unique_labels='auto')

计算监督学习的评分指标。

参数

  • y_target : 类似数组, 形状=[n_values]

    真实类别标签或目标值。

  • y_predicted : 类似数组, 形状=[n_values]

    预测类别标签或目标值。

  • metric : 字符串 (默认值: 'error')

    性能指标:'accuracy'(准确率):(TP + TN)/(FP + FN + TP + TN) = 1-ERR

    'average per-class accuracy'(平均每类别准确率):平均每类别准确率

    'average per-class error'(平均每类别错误率):平均每类别错误率

    'error'(错误率):(FP + FN)/(FP + FN + TP + TN) = 1-ACC

    'false_positive_rate'(假阳性率):FP/N = FP/(FP + TN)

    'true_positive_rate'(真阳性率):TP/P = TP/(FN + TP)

    'true_negative_rate'(真阴性率):TN/N = TN/(FP + TN)

    'precision'(精确率):TP/(TP + FP)

    'recall'(召回率):等于 'true_positive_rate'

    'sensitivity'(灵敏度):等于 'true_positive_rate' 或 'recall'

    'specificity'(特异度):等于 'true_negative_rate'

    'f1'(F1 分数):2 * (PRE * REC)/(PRE + REC)

    'matthews_corr_coef'(Matthews 相关系数):(TPTN - FPFN) / (sqrt{(TP + FP)( TP + FN )( TN + FP )( TN + FN )})

    其中:[TP: 真阳性,

    TN: 真阴性, FN = 假阴性]

  • positive_label : 整数 (默认值: 1)

    二元分类指标中阳性类别的标签。

  • unique_labels : 字符串或类似数组 (默认值: 'auto')

    如果为 'auto',则从 y_target 推断唯一的类别标签

返回值

  • score : 浮点数

示例

有关使用示例,请参阅 https://mlxtend.cn/mlxtend/user_guide/evaluate/scoring/