sklearn.metrics.adjusted_rand_score

sklearn.metrics.adjusted_rand_score(labels_true, labels_pred

源码

随机兰德调整指数。

兰德指数通过考虑所有样本对并计算在预测的聚类和真实的聚类中分配在相同或不同聚类中的对来计算两个聚类之间的相似性度量。

然后使用以下方案将原始RI分数“随机调整”为ARI分数:

ARI = (RI - Expected_RI) / (max(RI) - Expected_RI)

因此,对于随机标记,确保调整兰德指数的值接近于0.0,与簇和样本的数量无关,而当簇相同时(直到排列),恰好为1.0。

ARI是一种对称度量:

adjusted_rand_score(a, b) == adjusted_rand_score(b, a)

用户指南中阅读更多内容。

参数 说明
labels_true int array, shape = [n_samples]
真实类标签可用作参考
labels_pred array-like of shape (n_samples,)
聚类标签以进行评估
返回值 说明
ari float
相似分数介于-1.0和1.0之间。随机标签的ARI接近于0.0。1.0代表完美匹配。

另见:

参考

Hubert1985 L. Hubert and P. Arabie, Comparing Partitions, Journal of Classification 1985 https://link.springer.com/article/10.1007%2FBF01908075

wk https://en.wikipedia.org/wiki/Rand_index#Adjusted_Rand_index

示例

完全匹配的标签得分为一个偶数

>>> from sklearn.metrics.cluster import adjusted_rand_score
>>> adjusted_rand_score([0011], [0011])
1.0
>>> adjusted_rand_score([0011], [1100])
1.0

将所有类成员分配给同一类的标签完整却不会总是纯粹的,因此会受到惩罚:

>>> adjusted_rand_score([0012], [0011])
0.57...

ARI是对称的,因此具有纯聚类且成员来自相同类但没有不必要拆分的标签将受到惩罚:

>>> adjusted_rand_score([0011], [0012])
0.57...

如果类成员完全分散在不同的集群中,则分配完全不完整,因此ARI非常低:

>>> adjusted_rand_score([0000], [0123])
0.0