微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ValueError:数据不是二进制且未指定pos_label

如何解决ValueError:数据不是二进制且未指定pos_label

您只需要进行更改即可y_true,如下所示:

y_true=np.array([0, 1, 0, 0, 1, 1, 1, 1, 1])

如果查看一下https://github.com/scikit-learn/scikit- learn/blob/0.15.X/sklearn/metrics/metrics.py中的roc_auc_score功能,您将看到其评估如下:y_true

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")

在执行的时刻pos_labelNone,但是只要您将y_true字符定义为一个字符数组,并且np.all它们总是false被否定,并且所有条件都被否定,则if条件为,true并且引发异常。

解决方法

我正在尝试计算roc_auc_score,但是出现以下错误。

"ValueError: Data is not binary and pos_label is not specified"

我的代码段如下:

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','1'])
roc_auc_score(y_true,y_scores)

请告诉我这是怎么回事。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。