pearson_correlation
allennlp.training.metrics.pearson_correlation
PearsonCorrelation#
@Metric.register("pearson_correlation")
class PearsonCorrelation(Metric):
| def __init__(self) -> None
This Metric
calculates the sample Pearson correlation coefficient (r)
between two tensors. Each element in the two tensors is assumed to be
a different observation of the variable (i.e., the input tensors are
implicitly flattened into vectors and the correlation is calculated
between the vectors).
This implementation is mostly modeled after the streaming_pearson_correlation function in Tensorflow. See https://github.com/tensorflow/tensorflow/blob/v1.10.1/tensorflow/contrib/metrics/python/ops/metric_ops.py#L3267.
This metric delegates to the Covariance metric the tracking of three [co]variances:
covariance(predictions, labels)
, i.e. covariancecovariance(predictions, predictions)
, i.e. variance ofpredictions
covariance(labels, labels)
, i.e. variance oflabels
If we have these values, the sample Pearson correlation coefficient is simply:
r = covariance / (sqrt(predictions_variance) * sqrt(labels_variance))
if predictions_variance or labels_variance is 0, r is 0
__call__#
class PearsonCorrelation(Metric):
| ...
| def __call__(
| self,
| predictions: torch.Tensor,
| gold_labels: torch.Tensor,
| mask: Optional[torch.BoolTensor] = None
| )
Parameters
- predictions :
torch.Tensor
A tensor of predictions of shape (batch_size, ...). - gold_labels :
torch.Tensor
A tensor of the same shape aspredictions
. - mask :
torch.BoolTensor
, optional (default =None
)
A tensor of the same shape aspredictions
.
get_metric#
class PearsonCorrelation(Metric):
| ...
| def get_metric(self, reset: bool = False)
Returns
- The accumulated sample Pearson correlation.
reset#
class PearsonCorrelation(Metric):
| ...
| @overrides
| def reset(self)