normalized_mutual_info_score#
- sklearn.metrics.normalized_mutual_info_score(labels_true, labels_pred, *, average_method='arithmetic')[source]#
两个聚类之间的归一化互信息。
归一化互信息(NMI)是互信息(MI)分数的归一化,用于将结果缩放到0(无互信息)到1(完美相关性)之间。在此函数中,互信息通过
H(labels_true)和H(labels_pred))的某种广义平均值进行归一化,该平均值由average_method定义。此度量未针对偶然性进行调整。因此,可能更推荐使用
adjusted_mutual_info_score。此度量独立于标签的绝对值:类或簇标签值的排列不会以任何方式改变分数。
此度量也是对称的:将
label_true与label_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 之间,以归一化纳特(nats)为单位(基于自然对数)。1.0 代表完美的完整标签。
另请参阅
v_measure_scoreV-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