Показатели склеарна для мультиклассовой классификации

Я выполнил классификацию GaussianNB, используя sklearn. Я попытался вычислить метрики, используя следующий код:

print accuracy_score(y_test, y_pred)
print precision_score(y_test, y_pred)

Оценка точности работает правильно, но расчет точности показывает ошибку как:

ValueError: Цель является мультиклассовой, но средняя = "двоичная". Пожалуйста, выберите другую среднюю настройку.

Так как цель является мультиклассом, могу ли я получить метрическую оценку точности, отзыва и т. Д.?

1 ответ

Решение

Вызов функции precision_score(y_test, y_pred) эквивалентно precision_score(y_test, y_pred, pos_label=1, average='binary'), Документация ( http://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html) говорит нам:

"Двоичный":

Сообщайте о результатах только для класса, указанного в pos_label. Это применимо, только если цели (y_{true,pred}) являются двоичными.

Так что проблема в том, что ваши метки не двоичные, а, вероятно, закодированы в горячем виде. К счастью, есть другие варианты, которые должны работать с вашими данными:

precision_score(y_test, y_pred, average=None) будет возвращать оценки точности для каждого класса, в то время как

precision_score(y_test, y_pred, average='micro') вернет общее соотношение тп /(тп + фп)

pos_label Аргумент будет игнорироваться, если вы выберете другой average вариант, чем binary,

Другие вопросы по тегам