normalized_mutual_info_score#
- sklearn.metrics.normalized_mutual_info_score(labels_true, labels_pred, *, average_method='arithmetic')#
标准化两个聚类之间的互信息。
标准化互信息(NMI)是对互信息(MI)分数的归一化,以将结果缩放到0(无互信息)和1(完全相关)之间。在此函数中,互信息通过某种广义均值进行归一化,该均值由
average_method
定义,涉及H(labels_true)
和H(labels_pred)
。此度量未针对偶然性进行调整。因此,可能更倾向于使用:func:
adjusted_mutual_info_score
。此度量独立于标签的绝对值:类或聚类标签值的排列不会以任何方式改变分数值。
此度量 furthermore 对称:切换
label_true
与label_pred
将返回相同的分数值。当真实的基础真相未知时,这可以用于测量同一数据集上两种独立标签分配策略的一致性。更多信息请参阅 用户指南 。
- Parameters:
- labels_trueint 类数组,形状为 (n_samples,)
数据的分区到不相交的子集。
- labels_predint 类数组,形状为 (n_samples,)
数据的分区到不相交的子集。
- average_method{‘min’, ‘geometric’, ‘arithmetic’, ‘max’}, 默认=’arithmetic’
如何计算分母中的归一化因子。
Added in version 0.20.
Changed in version 0.22:
average_method
的默认值从’geometric’改为’arithmetic’。
- Returns:
- nmifloat
基于自然对数的归一化纳特(nats)之间的分数,范围为0.0到1.0。1.0表示完全完整的标签。
See also
v_measure_score
V-Measure(带有算术平均选项的NMI)。
adjusted_rand_score
调整兰德指数。
adjusted_mutual_info_score
调整互信息(针对偶然性调整)。
Examples
完美的标签既均匀又完整,因此得分为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
Gallery examples#
聚类性能评估中的机会调整