調整互資訊分數#
- sklearn.metrics.adjusted_mutual_info_score(labels_true, labels_pred, *, average_method='arithmetic')[原始碼]#
兩個群集之間的調整互資訊。
調整互資訊(AMI)是對互資訊(MI)分數的調整,以考慮機會因素。它考慮到以下事實:對於具有較多群集的兩個群集,MI通常會更高,無論實際是否有更多資訊共享。對於兩個群集 \(U\) 和 \(V\),AMI 給出為
AMI(U, V) = [MI(U, V) - E(MI(U, V))] / [avg(H(U), H(V)) - E(MI(U, V))]
此度量與標籤的絕對值無關:類別或群集標籤值的置換不會以任何方式更改分數值。
此外,這個指標是對稱的:交換 \(U\) (
label_true
)和 \(V\) (labels_pred
)會返回相同的分數值。當真實的 ground truth 未知時,這可以用來衡量兩種獨立標籤分配策略在同一資料集上的協議程度。請注意,此函數的執行速度比其他指標(例如調整蘭德指數)慢一個數量級。
請在使用者指南中閱讀更多資訊。
- 參數:
- labels_trueint 類陣列,形狀為 (n_samples,)
將資料分組為不相交子集的叢集,在上面的公式中稱為 \(U\)。
- labels_predint 類陣列,形狀為 (n_samples,)
將資料分組為不相交子集的叢集,在上面的公式中稱為 \(V\)。
- average_method{‘min’, ‘geometric’, ‘arithmetic’, ‘max’}, 預設值=’arithmetic’
如何在分母中計算正規化器。
於 0.20 版本新增。
在 0.22 版本中變更:
average_method
的預設值從 ‘max’ 變更為 ‘arithmetic’。
- 回傳值:
- ami: float(上限為 1.0)
當兩個分割完全相同(即完美匹配)時,AMI 會回傳值 1。隨機分割(獨立標籤)的平均預期 AMI 值約為 0,因此可能為負數。該值以調整後的 nat(基於自然對數)表示。
另請參閱
調整蘭德分數 (adjusted_rand_score)
調整蘭德指數。
互資訊分數 (mutual_info_score)
互資訊(未針對機率調整)。
參考文獻
範例
完美的標籤既同質又完整,因此分數為 1.0
>>> from sklearn.metrics.cluster import adjusted_mutual_info_score >>> adjusted_mutual_info_score([0, 0, 1, 1], [0, 0, 1, 1]) ... 1.0 >>> adjusted_mutual_info_score([0, 0, 1, 1], [1, 1, 0, 0]) ... 1.0
如果類別成員完全分散在不同的叢集中,則分配完全不完整,因此 AMI 為零
>>> adjusted_mutual_info_score([0, 0, 0, 0], [0, 1, 2, 3]) ... 0.0