2013-08-23 1 views
14

roc_auc_score을 계산하려고하는데 다음 오류가 발생합니다. 다음과 같이ValueError : 데이터가 바이너리가 아니며 pos_label이 지정되지 않았습니다.

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

그것으로 어떤 문제가 있는지 알려주세요.

답변

11

당신은 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 당신이 y_true 평가되는 것을 볼 수 있습니다 무엇을 roc_auc_score 기능에 대해 살펴 경우 : 실행 pos_label의 순간

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

요만큼 None이지만 ur는 y_true을 문자 배열로 정의하고 있습니다. np.all은 항상 false이며, 모두 부정 된 경우 if 조건은 true이며 예외가 발생합니다.

+0

알았어, 나는 이것을 눈치 채지 못했다. 그것을 지적 해 주셔서 감사합니다. –

+1

Github 링크가 더 이상 작동하지 않습니다. – Melike

+1

파일이 오래 전에 삭제 된 것처럼 보이며 현재 버전에서 더 이상 작동하지 않는 것으로 보아 이전 버전의 링크를 업데이트했습니다. – jabaldonedo

관련 문제