Получить значения отзыва (чувствительности) и точности (PPV) многоклассовой задачи в PyML
Я использую PyML для классификации SVM. Однако я заметил, что когда я оцениваю мультиклассовый классификатор с использованием LOO, объект результатов не сообщает значения чувствительности и PPV. Вместо этого они 0,0:
from PyML import *
from PyML.classifiers import multi
mc = multi.OneAgainstRest(SVM())
data = VectorDataSet('iris.data', labelsColumn=-1)
result = mc.loo(data)
result.getSuccessRate()
>>> 0.95333333333333337
result.getPPV()
>>> 0.0
result.getSensitivity()
>>> 0.0
Я посмотрел на код, но не мог понять, что здесь происходит не так. У кого-нибудь есть обходной путь для этого?
1 ответ
Вы не можете получить обычные измерения Precision/Recall для многоклассовой задачи. Вы должны получить Точность / Отзыв для каждого класса, и вы можете вычислить средневзвешенное значение.
Я не знаю о специфике PyML, но вы можете просто просмотреть прогнозы и рассчитать их для каждого класса.
Для расчета мультиклассовой чувствительности вы можете использовать scikit-learn metrics API.
Уведомление
average=None
на чувствительность каждого класса независимо.
sklearn.metrics.recall_score(Y_true,Y_prediction,average=None)
Например, если Y
имеет 4 класса, результатом будет массив с чувствительностью каждого из них.
array([0.96629213, 0.86263736, 0.81920904, 0.7704918])