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
Gallery examples#
DBSCAN聚类算法演示
亲和传播聚类算法示例
手写数字数据上的K-Means聚类演示
聚类性能评估中的机会调整