tf.keras.metrics.FBetaScore

Computes F-Beta score.

Inherits From: Metric, Layer, Module

This is the weighted harmonic mean of precision and recall. Its output range is [0, 1]. It works for both multi-class and multi-label classification.

It is defined as:

b2 = beta ** 2
f_beta_score = (1 + b2) * (precision * recall) / (precision * b2 + recall)

average Type of averaging to be performed across per-class results in the multi-class case. Acceptable values are None, "micro", "macro" and "weighted". Default value is None. If None, no averaging is performed and result() will return the score for each class. If "micro", compute metrics globally by counting the total true positives, false negatives and false positives. If "macro", compute metrics for each label, and return their unweighted mean. This does not take label imbalance into account. If "weighted", compute metrics for each label, and return their average weighted by support (the number of true instances for each label). This alters "macro" to account for label imbalance. It can result in an score that is not between precision and recall.
beta Determines the weight of given to recall in the harmonic mean between precision and recall (see pseudocode equation above). Default value is 1.
threshold Elements of y_pred greater than threshold are converted to be 1, and the rest 0. If threshold is None, the argmax of y_pred is converted to 1, and the rest to 0.
name Optional. String name of the metric instance.
dtype Optional. Data type of the metric result.

F-Beta Score: float.

Example:

metric = tf.keras.metrics.FBetaScore(beta=2.0, threshold=0.5)
y_true = np.array([[1, 1, 1],
                   [1, 0, 0],
                   [1, 1, 0]], np.int32)
y_pred = np.array([[0.2, 0.6, 0.7],
                   [0.2, 0.6, 0.6],
                   [0.6, 0.8, 0.0]], np.float32)
metric.update_state(y_true, y_pred)
result = metric.result()
result.numpy()
array([0.3846154 , 0.90909094, 0.8333334 ], dtype=float32)

Methods

merge_state

View source

Merges the state from one or more metrics.

This method can be used by distributed systems to merge the state computed by different metric instances. Typically the state will be stored in the form of the metric's weights. For example, a tf.keras.metrics.Mean metric contains a list of two weight values: a total and a count. If there were two instances of a tf.keras.metrics.Accuracy that each independently aggregated partial state for an overall accuracy calculation, these two metric's states could be combined as follows:

m1 = tf.keras.metrics.Accuracy()
_ = m1.update_state([[1], [2]], [[0], [2]])
m2 = tf.keras.metrics.Accuracy()
_ = m2.update_state([[3], [4]], [[3], [4]])
m2.merge_state([m1])
m2.result().numpy()
0.75

Args
metrics an iterable of metrics. The metrics must have compatible state.

Raises
ValueError If the provided iterable does not contain metrics matching the metric's required specifications.

reset_state

View source

Resets all of the metric state variables.

This function is called between epochs/steps, when a metric is evaluated during training.

result

View source

Computes and returns the scalar metric value tensor or a dict of scalars.

Result computation is an idempotent operation that simply calculates the metric value using the state variables.

Returns
A scalar tensor, or a dictionary of scalar tensors.

update_state

View source

Accumulates statistics for the metric.

Args
*args

**kwargs A mini-batch of inputs to the Metric.