Я пытаюсь понять, почему оценка F1 такова, что есть в sklearn
. Я понимаю, что он рассчитывается как:Вычисление показателя F1 с использованием sklearn
F1 = 2 * (precision * recall)/(precision + recall)
Мой код:
from sklearn.metrics import f1_score, precision_score, recall_score
...
fmeasure1 = f1_score(true_output, predicted_output, average="macro")
fmeasure2 = f1_score(true_output, predicted_output, average="micro")
precision = precision_score(true_output, predicted_output, average="macro")
recall = recall_score(true_output, predicted_output, average="macro")
print 2*(precision*recall)/(precision + recall), fmeasure1, fmeasure2
Значения, которые я получаю мои данные являются:
0.785744255639 0.769527615775 0.984532095901
Я не понимаю, почему эти три значения отличаются друг от друга. Я пробовал читать документацию here, но я все еще довольно потерян.
Мой набор данных является mutli-классом и, по своей природе, очень несбалансирован. Какое из значений здесь - это «правильное» значение, а также расширение, которое среди параметров для среднего (т. Е. None, micro, macro, weight) следует использовать?
Спасибо, и любое понимание будет очень ценным.
Я не понимаю. Каждая оценка F1 предназначена для определенного класса? – meraxes
В шестой строке документации: в случае с несколькими классами и с несколькими метками это средневзвешенное значение оценки F1 каждого класса. – SerialDev
Хорошо, спасибо за ваш вклад. Однако мой вопрос остается, почему: почему эти значения отличаются от значения, возвращаемого: 2 * (точность * отзыв)/(точность + отзыв)? – meraxes