Source code for denspp.offline.metric.data_torch

from sklearn.metrics import precision_recall_fscore_support
from torch import Tensor, eq, ne, sum, tensor


[docs] def calculate_number_true_predictions(pred: Tensor, true: Tensor) -> Tensor: """Function for determining the true predicted values Args: pred: Tensor with predicted values from model true: Tensor with true labels from dataset Return Tensor with metric """ assert pred.shape == true.shape, "Dimension / shape mismatch" return sum(eq(pred, true))
[docs] def calculate_number_false_predictions(pred: Tensor, true: Tensor) -> Tensor: """Function for determining the true predicted values Args: pred: Tensor with predicted values from model true: Tensor with true labels from dataset Return Tensor with metric """ assert pred.shape == true.shape, "Dimension / shape mismatch" return sum(ne(pred, true))
[docs] def calculate_precision(pred: Tensor, true: Tensor) -> Tensor: """Function for determining the precision metric Args: pred: Tensor with predicted values from model true: Tensor with true labels from dataset Return Tensor with metrics [precision] """ assert pred.shape == true.shape, "Dimension / shape mismatch" if pred.device.type == "mps": return tensor( precision_recall_fscore_support(true.cpu(), pred.cpu(), average="micro", warn_for=tuple())[0] ) else: return tensor(precision_recall_fscore_support(true, pred, average="micro", warn_for=tuple())[0])
[docs] def calculate_recall(pred: Tensor, true: Tensor) -> Tensor: """Function for determining the precision metric Args: pred: Tensor with predicted values from model true: Tensor with true labels from dataset Return Tensor with metrics [precision] """ assert pred.shape == true.shape, "Dimension / shape mismatch" if pred.device.type == "mps": return tensor( precision_recall_fscore_support(true.cpu(), pred.cpu(), average="micro", warn_for=tuple())[1] ) else: return tensor(precision_recall_fscore_support(true, pred, average="micro", warn_for=tuple())[1])
[docs] def calculate_fbeta(pred: Tensor, true: Tensor, beta: float = 1.0) -> Tensor: """Function for determining the precision metric Args: pred: Tensor with predicted values from model true: Tensor with true labels from dataset beta: Beta value for getting Fbeta metric Return Tensor with metrics [precision] """ assert pred.shape == true.shape, "Dimension / shape mismatch" if pred.device.type == "mps": return tensor( precision_recall_fscore_support( true.cpu(), pred.cpu(), beta=beta, average="micro", warn_for=tuple() )[2] ) else: return tensor( precision_recall_fscore_support(true, pred, beta=beta, average="micro", warn_for=tuple())[2] )