Показатели склеарна для мультиклассовой классификации
Я выполнил классификацию 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
,