互信息分數#

sklearn.metrics.mutual_info_score(labels_true, labels_pred, *, contingency=None)[原始碼]#

兩個叢集之間的互信息。

互信息是衡量相同資料的兩個標籤之間相似性的度量。其中 \(|U_i|\) 是叢集 \(U_i\) 中的樣本數,而 \(|V_j|\) 是叢集 \(V_j\) 中的樣本數,叢集 \(U\)\(V\) 之間的互信息為

\[MI(U,V)=\sum_{i=1}^{|U|} \sum_{j=1}^{|V|} \frac{|U_i\cap V_j|}{N} \log\frac{N|U_i \cap V_j|}{|U_i||V_j|}\]

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

這個指標是對稱的:交換 \(U\) (即 label_true) 和 \(V\) (即 label_pred) 將會回傳相同的分數值。當真實的 ground truth 未知時,這可以用來衡量兩個獨立的標籤分配策略在同一個資料集上的協議程度。

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

參數:
labels_true形狀為 (n_samples,) 的類陣列,dtype=整數

將資料分群成不相交子集的結果,在上述公式中稱為 \(U\)

labels_pred形狀為 (n_samples,) 的類陣列,dtype=整數

將資料分群成不相交子集的結果,在上述公式中稱為 \(V\)

contingency形狀為 (n_classes_true, n_classes_pred) 的類陣列或稀疏矩陣,預設為 None

contingency_matrix 函數給定的列聯表。如果值為 None,則會進行計算,否則將使用給定的值,並忽略 labels_truelabels_pred

回傳值:
mi浮點數

互信息,一個非負值,使用自然對數以納特為單位測量。

另請參閱

調整互信息分數

針對機率調整的互信息。

標準化互信息分數

正規化的互信息。

註解

使用的對數為自然對數(底數為 e)。

範例

>>> from sklearn.metrics import mutual_info_score
>>> labels_true = [0, 1, 1, 0, 1, 0]
>>> labels_pred = [0, 1, 0, 0, 1, 1]
>>> mutual_info_score(labels_true, labels_pred)
np.float64(0.056...)