Shortcuts

# Explained Variance¶

## Module Interface¶

class torchmetrics.ExplainedVariance(multioutput='uniform_average', **kwargs)[source]

Compute explained variance.

$\text{ExplainedVariance} = 1 - \frac{\text{Var}(y - \hat{y})}{\text{Var}(y)}$

Where $$y$$ is a tensor of target values, and $$\hat{y}$$ is a tensor of predictions.

As input to forward and update the metric accepts the following input:

• preds (Tensor): Predictions from model in float tensor with shape (N,) or (N, ...) (multioutput)

• target (Tensor): Ground truth values in long tensor with shape (N,) or (N, ...) (multioutput)

As output of forward and compute the metric returns the following output:

In the case of multioutput, as default the variances will be uniformly averaged over the additional dimensions. Please see argument multioutput for changing this behavior.

Parameters:
• multioutput (Literal['raw_values', 'uniform_average', 'variance_weighted']) –

Defines aggregation in the case of multiple output scores. Can be one of the following strings (default is 'uniform_average'.):

• 'raw_values' returns full set of scores

• 'uniform_average' scores are uniformly averaged

• 'variance_weighted' scores are weighted by their individual variances

• kwargs (Any) – Additional keyword arguments, see Advanced metric settings for more info.

Raises:

ValueError – If multioutput is not one of "raw_values", "uniform_average" or "variance_weighted".

Example

>>> from torch import tensor
>>> from torchmetrics.regression import ExplainedVariance
>>> target = tensor([3, -0.5, 2, 7])
>>> preds = tensor([2.5, 0.0, 2, 8])
>>> explained_variance = ExplainedVariance()
>>> explained_variance(preds, target)
tensor(0.9572)

>>> target = tensor([[0.5, 1], [-1, 1], [7, -6]])
>>> preds = tensor([[0, 2], [-1, 2], [8, -5]])
>>> explained_variance = ExplainedVariance(multioutput='raw_values')
>>> explained_variance(preds, target)
tensor([0.9677, 1.0000])

plot(val=None, ax=None)[source]

Plot a single or multiple values from the metric.

Parameters:
Return type:
Returns:

Figure and Axes object

Raises:

ModuleNotFoundError – If matplotlib is not installed

>>> from torch import randn
>>> # Example plotting a single value
>>> from torchmetrics.regression import ExplainedVariance
>>> metric = ExplainedVariance()
>>> metric.update(randn(10,), randn(10,))
>>> fig_, ax_ = metric.plot()

>>> from torch import randn
>>> # Example plotting multiple values
>>> from torchmetrics.regression import ExplainedVariance
>>> metric = ExplainedVariance()
>>> values = []
>>> for _ in range(10):
...     values.append(metric(randn(10,), randn(10,)))
>>> fig, ax = metric.plot(values)


## Functional Interface¶

torchmetrics.functional.explained_variance(preds, target, multioutput='uniform_average')[source]

Compute explained variance.

Parameters:
• preds (Tensor) – estimated labels

• target (Tensor) – ground truth labels

• multioutput (Literal['raw_values', 'uniform_average', 'variance_weighted']) –

Defines aggregation in the case of multiple output scores. Can be one of the following strings):

• 'raw_values' returns full set of scores

• 'uniform_average' scores are uniformly averaged

• 'variance_weighted' scores are weighted by their individual variances

Return type:

Example

>>> from torchmetrics.functional.regression import explained_variance
>>> target = torch.tensor([3, -0.5, 2, 7])
>>> preds = torch.tensor([2.5, 0.0, 2, 8])
>>> explained_variance(preds, target)
tensor(0.9572)

>>> target = torch.tensor([[0.5, 1], [-1, 1], [7, -6]])
>>> preds = torch.tensor([[0, 2], [-1, 2], [8, -5]])
>>> explained_variance(preds, target, multioutput='raw_values')
tensor([0.9677, 1.0000])


© Copyright Copyright (c) 2020-2023, Lightning-AI et al... Revision b57bb6d3.

Built with Sphinx using a theme provided by Read the Docs.