Shortcuts

R2 Score

Module Interface

class torchmetrics.R2Score(num_outputs=1, adjusted=0, multioutput='uniform_average', **kwargs)[source]

Computes r2 score also known as R2 Score_Coefficient Determination:

R^2 = 1 - \frac{SS_{res}}{SS_{tot}}

where SS_{res}=\sum_i (y_i - f(x_i))^2 is the sum of residual squares, and SS_{tot}=\sum_i (y_i - \bar{y})^2 is total sum of squares. Can also calculate adjusted r2 score given by

R^2_{adj} = 1 - \frac{(1-R^2)(n-1)}{n-k-1}

where the parameter k (the number of independent regressors) should be provided as the adjusted argument.

Forward accepts

  • preds (float tensor): (N,) or (N, M) (multioutput)

  • target (float tensor): (N,) or (N, M) (multioutput)

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
  • num_outputs (int) – Number of outputs in multioutput setting

  • adjusted (int) – number of independent regressors for calculating adjusted r2 score.

  • multioutput (str) –

    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

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

Raises
  • ValueError – If adjusted parameter is not an integer larger or equal to 0.

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

Example

>>> from torchmetrics import R2Score
>>> target = torch.tensor([3, -0.5, 2, 7])
>>> preds = torch.tensor([2.5, 0.0, 2, 8])
>>> r2score = R2Score()
>>> r2score(preds, target)
tensor(0.9486)
>>> target = torch.tensor([[0.5, 1], [-1, 1], [7, -6]])
>>> preds = torch.tensor([[0, 2], [-1, 2], [8, -5]])
>>> r2score = R2Score(num_outputs=2, multioutput='raw_values')
>>> r2score(preds, target)
tensor([0.9654, 0.9082])

Initializes internal Module state, shared by both nn.Module and ScriptModule.

compute()[source]

Computes r2 score over the metric states.

Return type

Tensor

update(preds, target)[source]

Update state with predictions and targets.

Parameters
  • preds (Tensor) – Predictions from model

  • target (Tensor) – Ground truth values

Return type

None

Functional Interface

torchmetrics.functional.r2_score(preds, target, adjusted=0, multioutput='uniform_average')[source]

Computes r2 score also known as R2 Score_Coefficient Determination:

R^2 = 1 - \frac{SS_{res}}{SS_{tot}}

where SS_{res}=\sum_i (y_i - f(x_i))^2 is the sum of residual squares, and SS_{tot}=\sum_i (y_i - \bar{y})^2 is total sum of squares. Can also calculate adjusted r2 score given by

R^2_{adj} = 1 - \frac{(1-R^2)(n-1)}{n-k-1}

where the parameter k (the number of independent regressors) should be provided as the adjusted argument.

Parameters
  • preds (Tensor) – estimated labels

  • target (Tensor) – ground truth labels

  • adjusted (int) – number of independent regressors for calculating adjusted r2 score.

  • multioutput (str) –

    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

Raises
  • ValueError – If both preds and targets are not 1D or 2D tensors.

  • ValueError – If len(preds) is less than 2 since at least 2 sampels are needed to calculate r2 score.

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

  • ValueError – If adjusted is not an integer greater than 0.

Example

>>> from torchmetrics.functional import r2_score
>>> target = torch.tensor([3, -0.5, 2, 7])
>>> preds = torch.tensor([2.5, 0.0, 2, 8])
>>> r2_score(preds, target)
tensor(0.9486)
>>> target = torch.tensor([[0.5, 1], [-1, 1], [7, -6]])
>>> preds = torch.tensor([[0, 2], [-1, 2], [8, -5]])
>>> r2_score(preds, target, multioutput='raw_values')
tensor([0.9654, 0.9082])
Return type

Tensor