accuracy_score:计算标准准确率、均衡准确率和每个类别的准确率

一个用于计算基本分类准确率、每个类别的准确率以及平均每个类别的准确率的函数。

from mlxtend.evaluate import accuracy_score

示例 1 -- 标准准确率

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

import numpy as np
from mlxtend.evaluate import accuracy_score


y_targ = [0, 0, 0, 1, 1, 1, 2, 2, 2]
y_pred = [1, 0, 0, 0, 1, 2, 0, 2, 2]

accuracy_score(y_targ, y_pred)
0.5555555555555556

示例 2 -- 每个类别的准确率

每个类别的准确率是一个类别(定义为 pos_label)相对于数据集中所有其余数据点的准确率。

import numpy as np
from mlxtend.evaluate import accuracy_score


y_targ = [0, 0, 0, 1, 1, 1, 2, 2, 2]
y_pred = [1, 0, 0, 0, 1, 2, 0, 2, 2]

std_acc = accuracy_score(y_targ, y_pred)
bin_acc = accuracy_score(y_targ, y_pred, method='binary', pos_label=1)

print(f'Standard accuracy: {std_acc*100:.2f}%')
print(f'Class 1 accuracy: {bin_acc*100:.2f}%')
Standard accuracy: 55.56%
Class 1 accuracy: 66.67%

示例 3 -- 平均每个类别的准确率

概述

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

在二元类别设置中

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

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

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

我们将准确率计算为

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

import numpy as np
from mlxtend.evaluate import accuracy_score


y_targ = [0, 0, 0, 1, 1, 1, 2, 0, 0]
y_pred = [1, 0, 0, 0, 1, 2, 0, 2, 1]

std_acc = accuracy_score(y_targ, y_pred)
bin_acc = accuracy_score(y_targ, y_pred, method='binary', pos_label=1)
avg_acc = accuracy_score(y_targ, y_pred, method='average')

print(f'Standard accuracy: {std_acc*100:.2f}%')
print(f'Class 1 accuracy: {bin_acc*100:.2f}%')
print(f'Average per-class accuracy: {avg_acc*100:.2f}%')
Standard accuracy: 33.33%
Class 1 accuracy: 55.56%
Average per-class accuracy: 55.56%

参考文献

API

accuracy_score(y_target, y_predicted, method='standard', pos_label=1, normalize=True)

用于监督学习的通用准确率函数。参数

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

    真实的类别标签或目标值。

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

    预测的类别标签或目标值。

  • method:字符串,默认为 'standard'。

    选择的准确率计算方法。如果设置为 'standard',计算总体准确率。如果设置为 'binary',计算 pos_label 类别的准确率。如果设置为 'average',计算平均每个类别(均衡)的准确率。如果设置为 'balanced',计算 scikit-learn 风格的均衡准确率。

  • pos_label:字符串或整数,默认为 1。

    要报告其准确率分数的类别。仅当 method 设置为 'binary' 时使用

  • normalize:布尔值,默认为 True。

    如果为 True,返回正确分类样本的比例。如果为 False,返回正确分类样本的数量。

返回值

score:浮点数

示例

有关用法示例,请参见 https://mlxtend.cn/mlxtend/user_guide/evaluate/accuracy_score/