首页 > 解决方案 > 计算kmeans模型的准确度得分

问题描述

这按预期工作,并为其中一组返回 1。

from sklearn import metrics

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

metrics.homogeneity_completeness_v_measure(labels_true, labels_pred)

(1.0, 0.6853314789615865, 0.8132898335036762)

但这对所有 3 个组返回 0.75,而我预计其中一个组为“1.0”,如上面提到的示例。

y = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]


labels = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2,
       2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2,
       2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0]


metrics.homogeneity_completeness_v_measure(y, labels)

(0.7514854021988339, 0.7649861514489816, 0.7581756800057786)

预计上述组之一中的 1 人!


更新:

如您所见,其中一组与另一组匹配,因此其中一个值应该是 1 而不是我为所有 3 个组获得的 0.75 准确度。这不是预期的!

from collections import Counter

Counter(y)
Counter(labels)

Counter({0: 50, 1: 50, 2: 50})
Counter({1: 50, 0: 62, 2: 38})

标签: machine-learningscikit-learnk-means

解决方案


首先,同质性、完整性和 v 度量得分计算如下:

C 和 K 是两个随机变量。在您的情况下, C 是标签 true,而 K 是预测的标签。如果h = 1,则表示H(C|K) = 0,asH(C)始终小于 0。如果H(C|K) = 0,则表示随机变量 C 完全由给定的随机变量 K 确定,您可以查看条件熵的更详细定义. 所以在你的第一种情况下,为什么 h = 1?因为当我给出随机变量 K(预测的标签)的值时,我知道随机变量 C(标签为真)将是什么。如果 k 等于 6,我知道 c 是 0。如果 k 是 1,c 是 1,等等。所以在谈论第二种情况时,为什么 h != 1 或 c != 1。因为即使两者之间存在完美匹配1比0,但没有其他类的完美匹配。如果我给k是1,我知道c是0。但是当我给k是0时,我不确定c是1还是2。因此,同质性得分或相反的完整性得分,你可以考虑一下, 不会是 1。


推荐阅读