Использование sklearn roc_auc_score для OneVsOne Multi-Classification? - PullRequest
0 голосов
/ 23 февраля 2020

Итак, я работаю над моделью, которая пытается использовать RandomForest для классификации выборок в 1 из 7 классов. Я могу построить и обучить модель, но когда дело доходит до оценки ее с помощью функции roc_au c, я могу выполнить 'ovr' (oneVsrest), но 'ovo' доставляет мне некоторые проблемы.

roc_auc_score(y_test, rf_probs, multi_class = 'ovr', average = 'weighted')

Вышеперечисленное прекрасно работает, я получаю вывод, однако, когда я переключаю multi_class на 'ovo', который, как я понимаю, может быть лучше с дисбалансами классов, я получаю следующую ошибку :

roc_auc_score(y_test, rf_probs, multi_class = 'ovo')

IndexError: слишком много индексов для массива

(я вставил всю трассировку ниже!)

В настоящее время мои данные настроены следующим образом:

y_test (61,1)

y_probs (61, 7)

Нужно ли менять форму данных особым образом использовать 'ovo'?

В документации https://thomasjpfan.github.io/scikit-learn-website/modules/generated/sklearn.metrics.roc_auc_score.html написано " binary y_true, предполагается, что y_score - оценка класса с большей меткой. мультиклассовый случай предполагает shape = [n_samples, n_classes], где баллы соответствуют оценкам вероятности."

Кроме того, вся трассировка, похоже, намекает на использование, возможно, более двоичного массива (надеюсь, это правильный термин Я новичок в этом!)

enter image description here

Очень, очень благодарен за любые идеи / мысли!

1 Ответ

0 голосов
/ 23 февраля 2020

@ Тирт Патель дал правильный ответ, мне нужно было изменить форму моего тестового набора, используя одно горячее кодирование. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...