invalid - errores comunes en python
ValueError: los datos no son binarios y no se especifica pos_label (1)
Estoy intentando calcular roc_auc_score
, pero roc_auc_score
siguiente error.
"ValueError: Data is not binary and pos_label is not specified"
Mi fragmento de código es el siguiente:
import numpy as np
from sklearn.metrics import roc_auc_score
y_scores=np.array([ 0.63, 0.53, 0.36, 0.02, 0.70 ,1 , 0.48, 0.46, 0.57])
y_true=np.array([''0'', ''1'', ''0'', ''0'', ''1'', ''1'', ''1'', ''1'', ''1''])
roc_auc_score(y_true, y_scores)
Por favor, dime qué está mal con eso.
Solo necesitas cambiar y_true
para que se vea así:
y_true=np.array([0, 1, 0, 0, 1, 1, 1, 1, 1])
Explicación: si echa un vistazo a las funciones de roc_auc_score
en https://github.com/scikit-learn/scikit-learn/blob/0.15.X/sklearn/metrics/metrics.py verá que y_true
se evalúa como sigue:
classes = np.unique(y_true)
if (pos_label is None and not (np.all(classes == [0, 1]) or
np.all(classes == [-1, 1]) or
np.all(classes == [0]) or
np.all(classes == [-1]) or
np.all(classes == [1]))):
raise ValueError("Data is not binary and pos_label is not specified")
En el momento de la ejecución, pos_label
es None
, pero mientras esté definiendo y_true
como una matriz de caracteres, np.all
siempre son false
y todos ellos se niegan, entonces la condición if es true
y la excepción se produce.