调整后的兰特得分的详细计算方法和过程

时间:2018-02-04 10:04:44

标签: python

Python编程,需要使用metrics.adjusted_rand_score测量两个数据群集合之间的相似性,但是,还没有根据从互联网兰特指数的定义理解adjusted_rand_score(RAND指数)的详细原理,如何计算它, ,它是:兰德指数通过考虑在预测和真实聚类中在相同或不同聚类中分配的所有样本对和计数对来计算两个聚类之间的相似性度量。  例如:

>>> adjusted_rand_score([0, 0, 1, 2], [0, 0, 1, 1])  
0.57...

>>> adjusted_rand_score([0, 0, 1, 1], [0, 0, 1, 2])  
0.57...

>>> adjusted_rand_score([0, 0, 0, 0], [0, 1, 2, 3])
0.0

>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]

>>> metrics.adjusted_rand_score(labels_true, labels_pred)  
0.24

如何获得该值:0.57和0.0,0.24,请您告诉我详细的计算方法和过程

1 个答案:

答案 0 :(得分:0)

考虑第一个示例:

>>> adjusted_rand_score([0, 0, 1, 2], [0, 0, 1, 1])  
0.57...

根据wikipedia页中说明的“调整兰德”索引,您必须制作3x2列联表(第一个分区中有3个群集,第二个分区中有2个群集)。所以我们有:

n11 = 2
n12 = 0
n13 = 0
n21 = 0
n22 = 1
n23 = 1

a1 = 2
a2 = 2
b1 = 2
b2 = 1
b3 = 1

根据the wikipedia page的ARI公式

ARI = {1 - [(1+1)*1)/6]} / {[ 1/2 * [(1+1)+1] ] - 1/3}= 4/7 = 0.57