ValueError: Data is not binary and pos_label is not specified
29,867
You only need to change y_true
so it looks like this:
y_true=np.array([0, 1, 0, 0, 1, 1, 1, 1, 1])
Explanation:
If you take a look to what roc_auc_score
functions does in https://github.com/scikit-learn/scikit-learn/blob/0.15.X/sklearn/metrics/metrics.py you will see that y_true
is evaluated as follows:
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")
At the moment of the execution pos_label
is None
, but as long as your are defining y_true
as an array of characters the np.all
are always false
and as all of them are negated then the if condition is true
and the exception is raised.
Related videos on Youtube
Author by
jabaldonedo
Updated on September 26, 2020Comments
-
jabaldonedo over 3 years
I am trying to calculate
roc_auc_score
, but I am getting following error."ValueError: Data is not binary and pos_label is not specified"
My code snippet is as follows:
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)
Please tell me what is wrong with it.
-
jabaldonedo about 7 yearsSeems like the file was deleted a long time ago and its no longer working in current version, I have updated the link to an older version