sklearn.metrics.adjusted_rand_score

sklearn.metrics.adjusted_rand_score()

Índice de rand ajustado para el azar.

El Índice de Rand calcula una medida de similitud entre dos conglomerados considerando todos los pares de muestras y contando los pares que se asignan en los mismos o diferentes conglomerados en las agrupaciones predichas y verdaderas.

La puntuación bruta de RI se «ajusta por casualidad» en la puntuación ARI utilizando el siguiente esquema:

ARI = (RI - Expected_RI) / (max(RI) - Expected_RI)

Por lo tanto, el índice de Rand ajustado está asegurado de tener un valor cercano a 0.0. para etiquetado aleatorio independiente del número de conglomerados y muestras y exactamente 1.0 cuando las agrupaciones son idénticas (hasta una permutación).

ARI es una medida simétrica:

adjusted_rand_score(a, b) == adjusted_rand_score(b, a)

Más información en el Manual de usuario.

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

Las etiquetas cLase de verdad fundamental a ser usadas como referencia

labels_predarray-like de forma (n_samples,)

Etiquetas de clúster a evaluar

Devuelve
ARIflotante

Puntuación de similitud entre -1.0 y 1.0. Las etiquetas aleatorias tienen un ARI cercano a 0.0. 1.0 es una coincidencia perfecta.

Ver también

adjusted_mutual_info_score

Información Mutua Ajustada (AMI en inglés).

Referencias

Hubert1985

L. Hubert and P. Arabie, Comparing Partitions, Journal of Classification 1985 https://link.springer.com/article/10.1007%2FBF01908075

Steinley2004

D. Steinley, Properties of the Hubert-Arabie adjusted Rand index, Psychological Methods 2004

wk

https://en.wikipedia.org/wiki/Rand_index#Adjusted_Rand_index

Ejemplos

Las etiquetas que coinciden perfectamente tienen una puntuación de 1 par

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

Las etiquetas que asignan a todos los miembros de las clases a los mismos conglomerados son completos, pero pueden no ser siempre puros, por lo que están penalizados:

>>> adjusted_rand_score([0, 0, 1, 2], [0, 0, 1, 1])
0.57...

ARI es simétrico, por lo que las etiquetas que tienen conglomerados puros con miembros viniendo de las mismas clases pero con divisiones innecesarias son penalizadas:

>>> adjusted_rand_score([0, 0, 1, 1], [0, 0, 1, 2])
0.57...

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

>>> adjusted_rand_score([0, 0, 0, 0], [0, 1, 2, 3])
0.0

Ejemplos usando sklearn.metrics.adjusted_rand_score