归一化互信息得分#

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

两个聚类之间的归一化互信息。

归一化互信息 (NMI) 是互信息 (MI) 得分的归一化,用于将结果缩放至 0(无互信息)到 1(完全相关)之间。在这个函数中,互信息通过`average_method`定义的H(labels_true)H(labels_pred))的某种广义平均值进行归一化。

此度量未针对偶然性进行调整。因此,可能更倾向于使用adjusted_mutual_info_score

此度量独立于标签的绝对值:类或聚类标签值的排列不会以任何方式改变得分值。

此指标此外还是对称的:将label_truelabel_pred互换,将返回相同的分数值。当不知道真实的基本事实时,这对于测量两种独立标签分配策略在同一数据集上的吻合度非常有用。

更多信息请参见用户指南

参数:
labels_true形状为 (n_samples,) 的整数型数组

将数据聚类成不相交子集。

labels_pred形状为 (n_samples,) 的整数型数组

将数据聚类成不相交子集。

average_method{'min', 'geometric', 'arithmetic', 'max'},默认为 'arithmetic'

如何计算分母中的归一化因子。

0.20 版本中新增。

0.22 版本中更改: average_method的默认值已从 'geometric' 更改为 'arithmetic'。

返回值:
nmi浮点数

0.0 到 1.0 之间的分数,以归一化奈特(基于自然对数)表示。1.0 代表完全完整的标记。

另请参见

V 测度得分

V-Measure(具有算术平均值选项的 NMI)。

调整后的 Rand 指数

调整后的 Rand 指数。

调整后的互信息得分

调整后的互信息(针对偶然性进行调整)。

示例

完美的标记既是同质的又是完整的,因此分数为 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