用ARI计算scikit's implementation时,我注意到一个奇怪的情况。对于某些看起来在标签上达成共识的列表,ARI仍为0.0甚至更差。
我尝试了几种标签,以下是最奇怪的标签:
from sklearn import metrics as m
labels_true = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
labels_pred = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1]
res = m.adjusted_rand_score(labels_true,labels_pred)
>>> res = 0.0
结果为0.0,这表明两个列表完全是随机标签。纵观它们,一个人会说这是一个很好的标签,除了一个列表条目,它是0类而不是1类的标签。这甚至是一个现实的聚类结果,例如,如果其中只有一个聚类一小块没有噪声的数据集,并且一个点被错误地分类为错误(0类)。
我的问题是:我对“好的”标签的理解是完全错误的,还是该算法可能存在某种错误或什至未记录的输入限制?
答案 0 :(得分:3)
不,是。
否:实现似乎正确,是:您的理解存在缺陷。
调整后的 rand索引将给定结果与标签的任何随机排列进行比较。 只有比随机结果更好,结果才是好的。
现在,如果您查看日期,那么任何随机排列都将完全一样。因此,正确的调整值为0:与随机排列完全一样。
但是,我确实同意您的评估,即ARI无法用于一类问题。因为在这样的数据上,所有排列都是相等的。针对您问题的工具错误:这是关于比较数据集的分区,而您没有分区的数据...