class_docstr: Compute precision, recall, F-measure and support for each class.
  
  The precision is the ratio `tp / (tp + fp)` where `tp` is the number of
  true positives and `fp` the number of false positives. The precision is
  intuitively the ability of the classifier not to label as positive a sample
  that is negative.
  
  The recall is the ratio `tp / (tp + fn)` where `tp` is the number of
  true positives and `fn` the number of false negatives. The recall is
  intuitively the ability of the classifier to find all the positive samples.
  
  The F-beta score can be interpreted as a weighted harmonic mean of
  the precision and recall, where an F-beta score reaches its best
  value at 1 and worst score at 0.
  
  If we have precision and recall, the F-beta score is simply:
  `F-beta = (1 + beta ** 2) * precision * recall / (beta ** 2 * precision + recall)`
  
  The F-beta score weights recall more than precision by a factor of
  `beta`. `beta == 1.0` means recall and precision are equally important.
  
  The support is the number of occurrences of each class in `y_true`.
  
  # Parameters
  
  beta : `float`, optional (default = `1.0`)
      The strength of recall versus precision in the F-score.
  
  average : `str`, optional (default = `None`)
      If `None`, the scores for each class are returned. Otherwise, this
      determines the type of averaging performed on the data:
  
      `'micro'`:
          Calculate metrics globally by counting the total true positives,
          false negatives and false positives.
      `'macro'`:
          Calculate metrics for each label, and find their unweighted mean.
          This does not take label imbalance into account.
      `'weighted'`:
          Calculate metrics for each label, and find 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
          F-score that is not between precision and recall.
  
  labels : `list`, optional
      The set of labels to include and their order if `average is None`.
      Labels present in the data can be excluded, for example to calculate a
      multi-class average ignoring a majority negative class. Labels not present
      in the data will result in 0 components in a macro or weighted average.
class_docstr_tok: ["Compute","precision",",","recall",",","F-measure","and","support","for","each","class",".","The","precision","is","the","ratio","`","tp","\/","(","tp","+","fp",")","`","where","`","tp","`","is","the","number","of","true","positives","and","`","fp","`","the","number","of","false","positives",".","The","precision","is","intuitively","the","ability","of","the","classifier","not","to","label","as","positive","a","sample","that","is","negative",".","The","recall","is","the","ratio","`","tp","\/","(","tp","+","fn",")","`","where","`","tp","`","is","the","number","of","true","positives","and","`","fn","`","the","number","of","false","negatives",".","The","recall","is","intuitively","the","ability","of","the","classifier","to","find","all","the","positive","samples",".","The","F-beta","score","can","be","interpreted","as","a","weighted","harmonic","mean","of","the","precision","and","recall",",","where","an","F-beta","score","reaches","its","best","value","at","1","and","worst","score","at","0",".","If","we","have","precision","and","recall",",","the","F-beta","score","is","simply",":","`","F-beta","=","(","1","+","beta","*","*","2",")","*","precision","*","recall","\/","(","beta","*","*","2","*","precision","+","recall",")","`","The","F-beta","score","weights","recall","more","than","precision","by","a","factor","of","`","beta","`",".","`","beta","==","1.0","`","means","recall","and","precision","are","equally","important",".","The","support","is","the","number","of","occurrences","of","each","class","in","`","y_true","`",".","#","Parameters","beta",":","`","float","`",",","optional","(","default","=","`","1.0","`",")","The","strength","of","recall","versus","precision","in","the","F-score",".","average",":","`","str","`",",","optional","(","default","=","`","None","`",")","If","`","None","`",",","the","scores","for","each","class","are","returned",".","Otherwise",",","this","determines","the","type","of","averaging","performed","on","the","data",":","`","'micro","'","`",":","Calculate","metrics","globally","by","counting","the","total","true","positives",",","false","negatives","and","false","positives",".","`","'macro","'","`",":","Calculate","metrics","for","each","label",",","and","find","their","unweighted","mean",".","This","does","not","take","label","imbalance","into","account",".","`","'weighted","'","`",":","Calculate","metrics","for","each","label",",","and","find","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","F-score","that","is","not","between","precision","and","recall",".","labels",":","`","list","`",",","optional","The","set","of","labels","to","include","and","their","order","if","`","average","is","None","`",".","Labels","present","in","the","data","can","be","excluded",",","for","example","to","calculate","a","multi-class","average","ignoring","a","majority","negative","class",".","Labels","not","present","in","the","data","will","result","in","0","components","in","a","macro","or","weighted","average","."]
docstr: # Returns
  
  precisions : `List[float]`
  recalls : `List[float]`
  f1-measures : `List[float]`
  
  !!! Note
      If `self.average` is not `None`, you will get `float` instead of `List[float]`.
docstr_tok: ["#","Returns","precisions",":","`","List","[","float","]","`","recalls",":","`","List","[","float","]","`","f1-measures",":","`","List","[","float","]","`","!","!","!","Note","If","`","self.average","`","is","not","`","None","`",",","you","will","get","`","float","`","instead","of","`","List","[","float","]","`","."]
code: def get_metric(self, reset: bool = False):
      """
      # Returns
  
      precisions : `List[float]`
      recalls : `List[float]`
      f1-measures : `List[float]`
  
      !!! Note
          If `self.average` is not `None`, you will get `float` instead of `List[float]`.
      """
      if self._true_positive_sum is None:
          raise RuntimeError(
              "You have never called this metric before."
          )
      else:
          tp_sum = self._true_positive_sum
          pred_sum = self._pred_sum
          true_sum = self._true_sum
  
      if self._labels is not None:
          # Retain only selected labels and order them
          tp_sum = tp_sum[self._labels]
          pred_sum = pred_sum[self._labels]  # type: ignore
          true_sum = true_sum[self._labels]  # type: ignore
  
      if self._average == "micro":
          tp_sum = tp_sum.sum()
          pred_sum = pred_sum.sum()  # type: ignore
          true_sum = true_sum.sum()  # type: ignore
  
      beta2 = self._beta**2
      # Finally, we have all our sufficient statistics.
      precision = nan_safe_tensor_divide(tp_sum, pred_sum)
      recall = nan_safe_tensor_divide(tp_sum, true_sum)
      fscore = (
          (1 + beta2)
          * precision
          * recall
          / (beta2 * precision + recall)
      )
      fscore[tp_sum == 0] = 0.0
  
      if self._average == "macro":
          precision = precision.mean()
          recall = recall.mean()
          fscore = fscore.mean()
      elif self._average == "weighted":
          weights = true_sum
          weights_sum = true_sum.sum()  # type: ignore
          precision = nan_safe_tensor_divide(
              (weights * precision).sum(), weights_sum
          )
          recall = nan_safe_tensor_divide(
              (weights * recall).sum(), weights_sum
          )
          fscore = nan_safe_tensor_divide(
              (weights * fscore).sum(), weights_sum
          )
  
      if reset:
          self.reset()
  
      if self._average is None:
          return {
              "precision": precision.tolist(),
              "recall": recall.tolist(),
              "fscore": fscore.tolist(),
          }
      else:
          return {
              "precision": precision.item(),
              "recall": recall.item(),
              "fscore": fscore.item(),
          }
  
file_path: allennlp/allennlp/training/metrics/fbeta_measure.py
imports: from typing import List, Optional, Union
  import torch
  from allennlp.common.util import nan_safe_tensor_divide
  from allennlp.common.checks import ConfigurationError
  from allennlp.training.metrics.metric import Metric
  from allennlp.nn.util import dist_reduce_sum
label_desc: Use image node_id 3 for calling the FBetaMeasure obj's underlying member method code with example usage: obj.get_metric(reset) and returns: dict, dict