sklearn.metrics.normalized_mutual_info_score

sklearn.metrics.normalized_mutual_info_score()

Información Mutua Normalizada entre dos conglomerados.

La Información Mutua Normalizada (Normalized Mutual Information, NMI) es una normalización de la puntuación de la Información Mutua (Mutual Information, MI) para escalar los resultados entre 0 (sin información mutua) y 1 (correlación perfecta). En esta función, la información mutua se normaliza mediante una media generalizada de H(labels_true) y H(labels_pred)), definida por el average_method.

Esta medida no está ajustada para el azar. Por lo tanto, podría ser preferible adjusted_mutual_info_score .

Esta métrica es independiente de los valores absolutos de las etiquetas: una permutación de los valores de las etiquetas de la clase o del conglomerado no cambiará el valor de la puntuación de ninguna manera.

Esta métrica es además simétrica: si se cambia label_true por label_pred devolverá el mismo valor de puntuación. Esto puede ser útil para medir la concordancia de dos estrategias independientes de asignación de etiquetas en el mismo conjunto de datos cuando no se conoce la verdad fundamental real.

Leer más en el Manual de Usuario.

Parámetros
labels_truearreglo de entero, forma = [n_samples]

Un conglomerado de los datos en subconjuntos disjuntos.

labels_predint array-like de forma (n_samples,)

Un conglomerado de los datos en subconjuntos disjuntos.

average_methodstr, default=”arithmetic”

Cómo calcular el normalizador en el denominador. Las opciones posibles son “min”, “geometric”, “arithmetic” y “max”.

Nuevo en la versión 0.20.

Distinto en la versión 0.22: El valor predeterminado de average_method cambió de “geometric” a “arithmetic”.

Devuelve
nmifloat

puntuación entre 0.0 y 1.0. 1.0 significa un etiquetado perfectamente completo

Ver también

v_measure_score

V-Measure (NMI con opción de media aritmética).

adjusted_rand_score

Índice de Rand ajustado (adjusted Rand Index).

adjusted_mutual_info_score

Información Mutua Ajustada (ajustada contra el azar).

Ejemplos

Los etiquetados perfectos son homogéneos y completos, por lo que tienen una puntuación de 1.0:

>>> from sklearn.metrics.cluster import normalized_mutual_info_score
>>> normalized_mutual_info_score([0, 0, 1, 1], [0, 0, 1, 1])
... 
1.0
>>> normalized_mutual_info_score([0, 0, 1, 1], [1, 1, 0, 0])
... 
1.0

Si los miembros de las clases están completamente divididos en diferentes conglomerados, la asignación es totalmente incompleta, por lo que el NMI es nulo:

>>> normalized_mutual_info_score([0, 0, 0, 0], [0, 1, 2, 3])
... 
0.0