正規化互資訊分數#

sklearn.metrics.normalized_mutual_info_score(labels_true, labels_pred, *, average_method='arithmetic')[原始碼]#

兩個集群之間的正規化互資訊。

正規化互資訊 (NMI) 是互資訊 (MI) 分數的正規化,將結果縮放到 0(無互資訊)和 1(完全相關)之間。在此函數中,互資訊通過 H(labels_true)H(labels_pred)) 的某些廣義平均值進行正規化,並由 average_method 定義。

此度量不針對偶然性進行調整。因此,可能首選 adjusted_mutual_info_score

此度量與標籤的絕對值無關:類別或叢集標籤值的排列不會以任何方式改變分數值。

此外,此度量是對稱的:將 label_truelabel_pred 交換,將返回相同的分數值。當真實的ground truth未知時,這對於測量兩個獨立的標籤分配策略在同一資料集上的一致性非常有用。

使用者指南中閱讀更多資訊。

參數:
labels_trueint 類陣列,形狀為 (n_samples,)

將資料分群成不相交子集的結果。

labels_predint 類陣列,形狀為 (n_samples,)

將資料分群成不相交子集的結果。

average_method{‘min’, ‘geometric’, ‘arithmetic’, ‘max’}, 預設值為 ‘arithmetic’

如何計算分母中的正規化因子。

於 0.20 版本新增。

於 0.22 版本變更: average_method 的預設值從 ‘geometric’ 變更為 ‘arithmetic’。

回傳值:
nmifloat

介於 0.0 和 1.0 之間的正規化單位(基於自然對數)。1.0 代表完美完整的標籤。

另請參閱

V度量分數

V-Measure (具有算術平均值選項的 NMI)。

調整蘭德分數

調整蘭德指數。

調整互資訊分數

調整互資訊(針對機率調整)。

範例

完美的標籤既是同質的又是完整的,因此得分為 1.0

>>> from sklearn.metrics.cluster import normalized_mutual_info_score
>>> normalized_mutual_info_score([0, 0, 1, 1], [0, 0, 1, 1])
... 
1.0
>>> normalized_mutual_info_score([0, 0, 1, 1], [1, 1, 0, 0])
... 
1.0

如果類別成員完全分散在不同的群集中,則分配完全不完整,因此 NMI 為空

>>> normalized_mutual_info_score([0, 0, 0, 0], [0, 1, 2, 3])
... 
0.0