метрики sklearn для многоклассовой классификации
Я выполнил классификацию GaussianNB с помощью sklearn. Я попытался вычислить метрики, используя следующий код:
print accuracy_score(y_test, y_pred)
print precision_score(y_test, y_pred)
оценка точности работает правильно, но расчет точности оценка показывает ошибку, как:
ValueError: Target-мультикласс, но average= 'binary'. Пожалуйста, выберите другую среднюю настройку.
поскольку целью является мультикласс, могу ли я иметь метрические оценки точности, вспомнить и т. д.?
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) говорит нам:
'binary':
только результаты отчета для класса, указанного pos_label. Это применимо только в том случае,если цели (y_{true, pred}) являются двоичными.
Итак, проблема в том, что ваши метки не являются двоичными, но, вероятно, закодированы с одним горячим кодом. К счастью, есть и другие варианты, которые должны работать с вашими данными:
precision_score(y_test, y_pred, average=None)
вернет оценки точности для каждого класса, в то время как
precision_score(y_test, y_pred, average='micro')
вернет общее соотношение
ТП/(ТП + ПЗ)
на чем binary
.