Я искал google и смотрю сообщение stackoverflow об этой ошибке. Это не мои дела.sklearn auc ValueError: только один класс присутствует в y_true
Я использую keras для обучения простой нейронной сети и сделать некоторые предварительные условия для разбитого набора тестовых данных. Но когда вы используете roc_auc_score
для вычисления auc, я получил «ValueError: только один класс, присутствующий в y_true. Оценка ROC AUC в этом случае не определена».
Я проверяю распределение метки ярлыков, и они очень несбалансированы. Некоторые метки (всего 29 ярлыков) имеют только 1 экземпляр. Поэтому, вероятно, у них не будет экземпляра положительной метки на тестовой метке. Таким образом, функция roc_auc_score
sklearn сообщила о проблеме только одного класса. Это разумно.
Но мне любопытно, что, когда я использую функцию cross_val_score
sklearn, он может обрабатывать вычисление AUC без ошибок.
my_metric = 'roc_auc'
scores = cross_validation.cross_val_score(myestimator, data,
labels, cv=5,scoring=my_metric)
Интересно, что случилось в cross_val_score
, это потому, что cross_val_score
использовать слоистую перекрестное разделение данных проверки?
== UPDATE ==
я продолжал делать некоторые раскопки, но до сих пор не могу найти разницу behind.I увидеть, что cross_val_score вызов check_scoring(estimator, scoring=None, allow_none=False)
вернуть бомбардир и check_scoring
позвонит get_scorer(scoring)
который будет возвращать scorer=SCORERS[scoring]
И SCORERS['roc_auc']
является roc_auc_scorer
;
roc_auc_scorer
производится
roc_auc_scorer = make_scorer(roc_auc_score, greater_is_better=True,
needs_threshold=True)
Итак, он все еще использует функцию roc_auc_score. Я не понимаю, почему cross_val_score ведет себя по-разному с прямым вызовом roc_auc_score.
что такое 'my_metric'? – maxymoo
@maxymoo Я использую строку 'roc_auc', это допустимое значение. –
Если вы перекрестно проверяете, и у вас слишком мало одного ярлыка, некоторые складки могут быть лишены каких-либо таких ярлыков. Попробуйте уменьшить количество складок и убедитесь, что вы используете стратифицированную выборку. – Kris