mutual_info_score#

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)互换,将返回相同的得分值。当真实的基础事实未知时,这对于衡量同一数据集上两种独立标签分配策略的一致性非常有用。

更多信息请参阅用户指南

参数:
labels_true形状为 (n_samples,) 的类数组,dtype=integral

将数据聚类为不相交子集,在上述公式中称为 \(U\)

labels_pred形状为 (n_samples,) 的类数组,dtype=integral

将数据聚类为不相交子集,在上述公式中称为 \(V\)

contingency{类数组, 稀疏矩阵} 形状为 (n_classes_true, n_classes_pred),默认值=None

contingency_matrix 函数给出的列联表。如果值为 None,则会进行计算,否则将使用给定值,并忽略 labels_truelabels_pred

返回:
mi浮点数

互信息,一个非负值,使用自然对数以奈特 (nats) 为单位测量。

另请参阅

adjusted_mutual_info_score

调整后的互信息。

normalized_mutual_info_score

标准化互信息。

注意

此处使用的对数是自然对数(以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)
0.0566