sklearn.metrics.jaccard_score

sklearn.metrics.jaccard_score()

Puntuación del coeficiente de similitud de Jaccard.

El índice de Jaccard [1], o coeficiente de similitud de Jaccard, definido como el tamaño de la intersección dividido por el tamaño de la unión de dos conjuntos de etiquetas, se utiliza para comparar el conjunto de etiquetas predichas para una muestra con el correspondiente conjunto de etiquetas en y_true.

Lee más en el Manual de Usuario.

Parámetros
y_truearray-like 1D, o arreglo indicador de etiquetas / matriz dispersa

Etiquetas reales (correctas).

y_predarray-like 1D, o arreglo indicador de etiquetas / matriz dispersa

Etiquetas predichas, devueltas por un clasificador.

labelsarray-like de forma (n_classes,), default=None

El conjunto de etiquetas a incluir cuando average != 'binary', y su orden si average is None. Las etiquetas presentes en los datos pueden ser excluidas, por ejemplo para calcular un promedio multiclase ignorando una clase mayoritariamente negativa, mientras que las etiquetas no presentes en los datos resultarán en 0 componentes en un promedio macro. Para los objetivos multietiqueta, las etiquetas son índices de columna. Por defecto, todas las etiquetas en y_true y y_pred se utilizan en orden sorted.

pos_labelcadena o entero, default=1

La clase para reportar si average='binary'` y los datos son binarios. Si los datos son multiclase o multietiqueta, esto se ignorará; si se establece ``labels=[pos_label] y average != 'binary' se reportará puntuaciones sólo para esa etiqueta.

average{None, “micro”, “macro”, “samples”, “weighted”, “binary”}, default=”binary”

Si es None, se devuelven las puntuaciones de cada clase. En caso contrario, esto determina el tipo de promedio realizado sobre los datos:

'binary':

Sólo reporta los resultados para la clase especificada por pos_label. Esto es aplicable sólo si los objetivos (y_{true,pred}) son binarios.

'micro':

Calcula las métricas globalmente contando el total de verdaderos positivos, falsos negativos y falsos positivos.

'macro':

Calcula las métricas para cada etiqueta y encuentra su media no ponderada. Esto no tiene en cuenta el desequilibrio de las etiquetas.

'weighted':

Calcula las métricas para cada etiqueta y encuentra su promedio, ponderado por el soporte (el número de instancias verdaderas para cada etiqueta). Esto altera “macro” para explicar el desequilibrio de las etiquetas.

'samples':

Calcula las métricas para cada instancia y encuentra su promedio (sólo tiene sentido para la clasificación multietiqueta).

sample_weightarray-like de forma (n_samples,), default=None

Ponderaciones de muestras.

zero_division«warn», {0.0, 1.0}, default=»warn»

Establece el valor a devolver cuando hay una división cero, es decir, cuando no hay valores negativos en las predicciones y etiquetas. Si se establece en «warn», actúa como 0, pero también se levanta una advertencia.

Devuelve
scoreflotante (si average no es None) o array de flotantes, shape = [n_unique_labels]

Notas

jaccard_score puede ser una métrica pobre si no hay positivos para algunas muestras o clases. Jaccard es indefinido si no hay etiquetas verdaderas o predichas, y nuestra implementación devolverá una puntuación de 0 con una advertencia.

Referencias

1

Entrada de Wikipedia para el índice de Jaccard.

Ejemplos

>>> import numpy as np
>>> from sklearn.metrics import jaccard_score
>>> y_true = np.array([[0, 1, 1],
...                    [1, 1, 0]])
>>> y_pred = np.array([[1, 1, 1],
...                    [1, 0, 0]])

En el caso binario:

>>> jaccard_score(y_true[0], y_pred[0])
0.6666...

En el caso multietiqueta:

>>> jaccard_score(y_true, y_pred, average='samples')
0.5833...
>>> jaccard_score(y_true, y_pred, average='macro')
0.6666...
>>> jaccard_score(y_true, y_pred, average=None)
array([0.5, 0.5, 1. ])

En el caso multiclase:

>>> y_pred = [0, 2, 1, 2]
>>> y_true = [0, 1, 2, 2]
>>> jaccard_score(y_true, y_pred, average=None)
array([1. , 0. , 0.33...])

Ejemplos utilizando sklearn.metrics.jaccard_score