5 votos

¿Cuál resultado de información mutua normalizada es correcto?

Quería encontrar la información mutua normalizada para validar un algoritmo de agrupamiento, pero he encontrado dos valores diferentes dependiendo de la biblioteca que use.

En Python:

from sklearn import metrics
labels_true = [0, 0, 0, 1, 1, 1]
labels_pred = [1, 1, 0, 0, 3, 3]

nmi = metrics.normalized_mutual_info_score(labels_true, labels_pred)

Esto retorna nmi = 0.52954.

En R:

library(aricode)
labels_true = c(0, 0, 0, 1, 1, 1)
labels_pred = c(1, 1, 0, 0, 3, 3)

nmi = NMI(labels_true,labels_pred)

Esto retorna n = 0.42061.

¿En cuál debería confiar? Realmente no sé por qué están devolviendo resultados diferentes si hay una fórmula cerrada para NMI...

4voto

Tendero Puntos 149

Resulta que la versión de R utiliza por defecto la variante 'max' del NMI, mientras que la de Python utiliza 'sqrt'.

Haciendo esto en R obtendrás los mismos resultados:

NMI(labels_true, labels_pred, variant="sqrt")

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X