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,) 的 array-like
真实标签。
- y_score形状为 (n_samples,) 或 (n_samples, n_classes) 的类似数组对象
目标分数。这些可以是概率估计或非阈值决策值(如某些分类器上的 decision_function 所返回)。二分类情况要求分数形状为 (n_samples,),而多分类情况要求分数形状为 (n_samples, n_classes)。在多分类情况中,如果提供了
labels,则类别分数的顺序必须与labels的顺序对应,否则必须与y_true中标签的数字或词典顺序对应。如果y_true不包含所有标签,则必须提供labels。- kint, default=2
考虑用于查找正确标签的最可能结果的数量。
- normalizebool, default=True
如果为
True,返回正确分类样本的比例。否则,返回正确分类样本的数量。- sample_weightshape 为 (n_samples,) 的 array-like, default=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