top_k_accuracy_score#
- sklearn.metrics.top_k_accuracy_score(y_true, y_score, *, k=2, normalize=True, sample_weight=None, labels=None)[原始碼]#
Top-k 準確度分類分數。
此指標計算正確標籤位於預測的前
k
個標籤(依預測分數排序)內的次數。請注意,這裡不涵蓋多標籤的情況。在使用者指南中閱讀更多內容
- 參數:
- y_truearray-like,形狀為 (n_samples,)
真實標籤。
- y_scorearray-like,形狀為 (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_weightarray-like,形狀為 (n_samples,),預設值為 None
樣本權重。如果為
None
,則所有樣本都會被賦予相同的權重。- labelsarray-like,形狀為 (n_classes,),預設值為 None
僅限多類別。索引
y_score
中類別的標籤清單。如果為None
,則會使用y_true
中標籤的數值或詞彙順序。如果y_true
未包含所有標籤,則必須提供labels
。
- 回傳:
- scorefloat
top-k 準確度分數。最佳效能為 1,當
normalize == True
時,以及當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) np.float64(0.75) >>> # Not normalizing gives the number of "correctly" classified samples >>> top_k_accuracy_score(y_true, y_score, k=2, normalize=False) np.int64(3)