sklearn.metrics.v_measure_score

sklearn.metrics.v_measure_score()

Etiquetado de conglomerados con medida V dada una verdad fundamental.

Esta puntuación es idéntica a la de normalized_mutual_info_score con la opción 'arithmetic' para promediar.

La medida V es la media armónica entre la homogeneidad y la completitud:

v = (1 + beta) * homogeneity * completeness
     / (beta * homogeneity + completeness)

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

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 el acuerdo de dos estrategias independientes de asignación de etiquetas en el mismo conjunto de datos cuando se desconoce la verdad fundamental real.

Lee más en el Manual de usuario.

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

etiquetas de clase de verdad fundamental que se utilizarán como referencia

labels_predarray-like de forma (n_samples,)

etiquetas de conglomerados para evaluar

betafloat, default=1.0

Razón de la ponderación atribuida a homogeneity vs completeness. Si beta es mayor que 1, completeness tiene más ponderación en el cálculo. Si beta es menor que 1, homogeneity tiene más ponderación.

Devuelve
v_measurefloat

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

Referencias

1

Andrew Rosenberg and Julia Hirschberg, 2007. V-Measure: A conditional entropy-based external cluster evaluation measure

Ejemplos

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

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

Los etiquetados que asignan todos los miembros de las clases a los mismos conglomerados son completos no homogéneos, por lo que se penalizan:

>>> print("%.6f" % v_measure_score([0, 0, 1, 2], [0, 0, 1, 1]))
0.8...
>>> print("%.6f" % v_measure_score([0, 1, 2, 3], [0, 0, 1, 1]))
0.66...

Los etiquetados que tienen conglomerados puros con miembros procedentes de las mismas clases son homogéneos, pero las divisiones innecesarias perjudican la exhaustividad y, por tanto, penalizan también la medida V:

>>> print("%.6f" % v_measure_score([0, 0, 1, 1], [0, 0, 1, 2]))
0.8...
>>> print("%.6f" % v_measure_score([0, 0, 1, 1], [0, 1, 2, 3]))
0.66...

Si los miembros de las clases están completamente divididos en diferentes conglomerados, la asignación es totalmente incompleta, por tanto la Medida V es nula:

>>> print("%.6f" % v_measure_score([0, 0, 0, 0], [0, 1, 2, 3]))
0.0...

Los conglomerados o agrupaciones que incluyen muestras de clases totalmente diferentes destruyen totalmente la homogeneidad del etiquetado, por tanto:

>>> print("%.6f" % v_measure_score([0, 0, 1, 1], [0, 0, 0, 0]))
0.0...

Ejemplos utilizando sklearn.metrics.v_measure_score