метрики 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.