互信息评分#

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

两个聚类之间的互信息。

互信息是衡量相同数据的两个标签之间相似度的一种度量。其中\(|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{array-like, sparse matrix} 形状为 (n_classes_true, n_classes_pred),默认值=None

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

返回:
mi浮点数

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

另请参见

adjusted_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)
np.float64(0.056...)