調整互資訊分數#

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