adjusted_mutual_info_score#

sklearn.metrics.adjusted_mutual_info_score(labels_true, labels_pred, *, average_method='arithmetic')#

调整两个聚类的互信息。

调整互信息(AMI)是对互信息(MI)分数的调整,以考虑偶然性。它考虑了这样一个事实:对于具有更多聚类的两个聚类,MI通常更高,无论是否实际上有更多的信息共享。对于两个聚类 \(U\)\(V\) ,AMI 给出如下:

AMI(U, V) = [MI(U, V) - E(MI(U, V))] / [avg(H(U), H(V)) - E(MI(U, V))]

该指标独立于标签的绝对值:类或聚类标签值的排列不会以任何方式改变分数值。

该指标 furthermore 对称:切换 \(U\)label_true )和 \(V\)labels_pred )将返回相同的分数值。当真实的基础真相未知时,这可以用于测量同一数据集上两种独立标签分配策略的一致性。

请注意,此函数比其他指标(如调整兰德指数)慢一个数量级。

更多信息请参阅 用户指南

Parameters:
labels_trueint 类数组,形状为 (n_samples,)

对数据的分区成不相交的子集,在上述公式中称为 \(U\)

labels_predint 类数组,形状为 (n_samples,)

对数据的分区成不相交的子集,在上述公式中称为 \(V\)

average_method{‘min’, ‘geometric’, ‘arithmetic’, ‘max’}, 默认=’arithmetic’

如何计算分母中的标准化因子。

Added in version 0.20.

Changed in version 0.22: average_method 的默认值从 ‘max’ 改为 ‘arithmetic’。

Returns:
ami: float(上限为 1.0)

当两个分区相同时(即完全匹配),AMI 返回值 1。随机分区(独立标签)的预期 AMI 平均约为 0,因此可能为负。该值以调整的自然对数(基于自然对数)表示。

See also

adjusted_rand_score

调整兰德指数。

mutual_info_score

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

References

Examples

完美的标签既均匀又完整,因此得分为 1.0:

>>> from sklearn.metrics.cluster import adjusted_mutual_info_score
>>> adjusted_mutual_info_score([0, 0, 1, 1], [0, 0, 1, 1])
... 
1.0
>>> adjusted_mutual_info_score([0, 0, 1, 1], [1, 1, 0, 0])
... 
1.0

如果类成员完全分散在不同的聚类中,分配完全不完整,因此 AMI 为空:

>>> adjusted_mutual_info_score([0, 0, 0, 0], [0, 1, 2, 3])
... 
0.0