top_k_accuracy_score#

sklearn.metrics.top_k_accuracy_score(y_true, y_score, *, k=2, normalize=True, sample_weight=None, labels=None)[source]#

Top-k 准确率分类得分。

此指标计算正确标签在预测的前 k 个标签(按预测分数排名)中出现的次数。请注意,此处不涵盖多标签情况。

用户指南中阅读更多信息

参数:
y_true形状为 (n_samples,) 的类数组对象

真实标签。

y_score形状为 (n_samples,) 或 (n_samples, n_classes) 的类数组对象

目标分数。这些可以是概率估计或非阈值决策值(如某些分类器上 decision_function 返回)。二分类情况预期分数的形状为 (n_samples,),而多分类情况预期分数的形状为 (n_samples, n_classes)。在多分类情况中,类别分数的顺序必须与 labels(如果提供)的顺序一致,否则与 y_true 中标签的数值或字典序一致。如果 y_true 不包含所有标签,则必须提供 labels

kint, 默认为 2

为找到正确标签而考虑的最可能结果的数量。

normalizebool, 默认为 True

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

sample_weight形状为 (n_samples,) 的类数组对象, 默认为 None

样本权重。如果为 None,所有样本被赋予相同的权重。

labels形状为 (n_classes,) 的类数组对象, 默认为 None

仅限于多分类。用于索引 y_score 中类别的标签列表。如果为 None,则使用 y_true 中标签的数值或字典序。如果 y_true 不包含所有标签,则必须提供 labels

返回:
scorefloat

Top-k 准确率得分。当 normalize == True 时,最佳性能为 1;当 normalize == False 时,最佳性能为样本数量。

另请参阅

accuracy_score

计算准确率得分。默认情况下,函数将返回正确预测的数量除以总预测数量的比例。

注意事项

在两个或更多标签被赋予相等预测分数的情况下,将首先选择索引最高的标签。如果正确标签因此而落在阈值之后,这可能会影响结果。

示例

>>> import numpy as np
>>> from sklearn.metrics import top_k_accuracy_score
>>> y_true = np.array([0, 1, 2, 2])
>>> y_score = np.array([[0.5, 0.2, 0.2],  # 0 is in top 2
...                     [0.3, 0.4, 0.2],  # 1 is in top 2
...                     [0.2, 0.4, 0.3],  # 2 is in top 2
...                     [0.7, 0.2, 0.1]]) # 2 isn't in top 2
>>> top_k_accuracy_score(y_true, y_score, k=2)
0.75
>>> # Not normalizing gives the number of "correctly" classified samples
>>> top_k_accuracy_score(y_true, y_score, k=2, normalize=False)
3.0