sklearn.metrics.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))]
此指标独立于标签的绝对值:类别或簇标签值的排列不会以任何方式改变得分值。
此度量很对称:将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的默认值从‘max’变为‘arithmetic’。 |
返回值 | 说明 |
---|---|
ami | float (upperlimited by 1.0) 当两个分区相同(即完全匹配)时,AMI返回值1。随机分区(独立标签)的预期AMI平均约为0,因此可以为负。 |
另见:
兰德调整指数
互信息(未经调整)
参考
2 Wikipedia entry for the Adjusted Mutual Information
示例
完全标签既均匀又完整,因此得分为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