sklearn.metrics.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))的某种广义均值进行归一化。
此度量没有随机调整。因此,adjusted_mutual_info_score
可能是首选。
此指标独立于标签的绝对值:类或簇标签值的排列不会以任何方式改变得分值。
此度量还对称:将label_true与label_pred互换将返回相同的得分值。 当未知真实值时,这对于测量两个独立标签分配策略在同一数据集上的一致性很有用。
在用户指南中阅读更多内容。
参数 | 说明 |
---|---|
labels_true | int array, shape = [n_samples] 数据聚集成不相交的子集。 |
labels_pred | int array-like of shape (n_samples,) 数据聚集成不相交的子集。 |
average_method | string, optional (default: ‘arithmetic’) 如何在分母中计算归一化。可能的选项是‘min’,‘geometric’,‘arithmetic’,和‘max’。 0.20版中的新功能。 在0.22版中进行了更改:average_method的默认值从‘geometric’更改为‘arithmetic’。 |
返回值 | 说明 |
---|---|
nmi | float 分数介于0.0和1.0之间。 1.0代表完全标签 |
另见:
V度量(具有算术平均值选项的NMI。)
兰德调整指数
调整互信息(随机调整)
示例
完全标签既均匀又完整,因此得分为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为null:
>>> normalized_mutual_info_score([0, 0, 0, 0], [0, 1, 2, 3])
...
0.0