互信息分數#
- 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_true
和labels_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...)