normalized_mutual_info_score#

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

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

归一化互信息(NMI)是对互信息(MI)分数进行归一化,将结果缩放到0(无互信息)到1(完美相关)之间。在此函数中,互信息通过 H(labels_true)H(labels_pred)) 的某种广义平均值进行归一化,该平均值由 average_method 定义。

此度量未针对偶然性进行调整。因此,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_measure_score

V-Measure(使用算术平均选项的NMI)。

adjusted_rand_score

调整兰德指数。

adjusted_mutual_info_score

调整互信息(针对偶然性调整)。

示例

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