Рассчитать оценку точности модели kmeans - PullRequest
0 голосов
/ 21 января 2020

Работает как положено и возвращает 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)

Но для всех возвращается 0,75 3 группы, в то время как я ожидал «1,0» для одной из групп, как в примере, упомянутом выше. одна из групп выше!


Обновление:

Как видите, одна из групп совпадает с другой, и поэтому одно из значений должно быть 1 вместо точности 0,75 что я получаю за все 3 группы. Этого не ожидается!

from collections import Counter

Counter(y)
Counter(labels)

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

1 Ответ

1 голос
/ 17 февраля 2020

Во-первых, гомогенность, полнота и оценка v измеряются следующим образом:

image

image

image

C and K are two random variables. In your case, C is the labels true, while K is the label predicted. If h = 1, it means that H(C|K) = 0, as H(C) is always less than 0. If H(C|K) = 0, it means that random variable C is completely determined by given random variable K, you can see more detailed definition on условная энтропия . Итак, в вашем первом случае, почему h = 1? Потому что, когда я даю значение случайной величины K (метки предсказаны), я знаю, какой будет случайная величина C (метки true). Если k равно 6, я знаю, c равно 0. Если k равно 1, c равно 1, et c. Итак, говоря о втором случае, почему h! = 1 или c! = 1. Потому что, хотя между 1 и 0 есть идеальное совпадение, но не существует идеального совпадения для других классов. Если я даю k, равное 1, я знаю, что c равно 0. Но когда я даю k, равно 0, я не уверен, равен ли c 1 или 2. Таким образом, оценка однородности или наоборот, оценка полноты, вы можно думать об этом, не будет 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...