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%
参考文献
- [1] S. Raschka。二元分类器系统通用性能指标概述。Computing Research Repository (CoRR), abs/1410.5330, 2014。
- [2] Cyril Goutte and Eric Gaussier。精度、召回率和 F 分数的概率解释及其对评估的意义。见:Advances in Information Retrieval, pages 345–359. Springer, 2005。
- [3] Brian W Matthews。T4 噬菌体溶菌酶预测与观察到的二级结构比较。Biochimica et Biophysica Acta (BBA)- Protein Structure, 405(2):442–451, 1975。
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/