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 siaverage 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 eny_true
yy_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]
yaverage != '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]
Ver también
accuracy_score
,f_score
,multilabel_confusion_matrix
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
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...])