tf.contrib.metrics.f1_score
Вычисляет приблизительно наилучший показатель F1 по различным порогам.
tf.contrib.metrics.f1_score(
labels, predictions, weights=None, num_thresholds=200, metrics_collections=None,
updates_collections=None, name=None
)
Функция f1_score применяет ряд пороговых значений к прогнозам, чтобы преобразовать их из [0, 1] в булевы значения. Точность и полнота вычисляются путем сравнения их с метками. Затем показатель F1 определяется как 2 * точность * полнота / (точность + полнота). Возвращается наилучшее значение по порогам.
Примечание: на практике может быть желательно выбрать лучший порог на наборе данных для проверки и оценить показатель F1 с этим порогом на отдельном тестовом наборе. Или может быть желательно использовать фиксированный порог (например, 0,5).
Эта функция внутренне создает четыре локальные переменные, true_positives, true_negatives, false_positives и false_negatives, которые используются для вычисления пар значений полноты и точности для линейно распределённого набора порогов, из которых выводится наилучший показатель F1.
Это значение в конечном итоге возвращается как f1-score, идемпотентная операция, которая вычисляет показатель F1 (вычисляемый с использованием вышеупомянутых переменных). Переменная num_thresholds контролирует степень дискретизации, при большем количестве порогов приближение к истинному наилучшему значению F1 становится точнее.
Для оценки метрики по потоку данных функция создаёт операцию update_op, которая обновляет эти переменные и возвращает показатель F1.
Пример использования с пользовательским оценщиком: def model_fn(features, labels, mode): predictions = make_predictions(features) loss = make_loss(predictions, labels) train_op = tf.contrib.training.create_train_op( total_loss=loss, optimizer='Adam') eval_metric_ops = {'f1': f1_score(labels, predictions)} return tf.estimator.EstimatorSpec( mode=mode, predictions=predictions, loss=loss, train_op=train_op, eval_metric_ops=eval_metric_ops, export_outputs=export_outputs) estimator = tf.estimator.Estimator(model_fn=model_fn)
Если weights равно None, веса по умолчанию равны 1. Используйте веса 0 для маскирования значений.
| Args | |
|---|---|
labels | A Tensor с формой, соответствующей predictions. Будет приведено к типу bool. |
predictions | A floating point Tensor произвольной формы, значения которого находятся в диапазоне [0, 1]. |
weights | Необязательные Tensor с рангом 0 или таким же, как у labels, и должны быть совместимы с labels (т.е., все измерения должны быть либо 1, или такими же, как соответствующее измерение labels). |
num_thresholds | Количество порогов, используемых при дискретизации кривой ROC. |
metrics_collections | Необязательный список коллекций, к которым f1_score должны быть добавлены. |
updates_collections | Необязательный список коллекций, к которым update_op должны быть добавлены. |
name | Необязательное имя области переменных. |
| Returns | |
|---|---|
f1_score | Скалярное Tensor, представляющее текущее наилучшее значение F1 по различным порогам. |
update_op | Операция, которая увеличивает переменные true_positives, true_negatives, false_positives и false_negatives соответствующим образом и значение которой совпадает со значением f1_score. |
| Raises | |
|---|---|
ValueError | Если predictions и labels имеют несовпадающие формы, или если weights не является None и его форма не совпадает с predictions, или если metrics_collections или updates_collections не являются списком или кортежем. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/metrics/f1_score