class_docstr: Class that stores the results of a COCO detection evaluation.
  
  Args:
      samples: the :class:`fiftyone.core.collections.SampleCollection` used
      config: the :class:`COCOEvaluationConfig` used
      eval_key: the evaluation key
      matches: a list of
          ``(gt_label, pred_label, iou, pred_confidence, gt_id, pred_id)``
          matches. Either label can be ``None`` to indicate an unmatched
          object
      precision: an array of precision values of shape
          ``num_iou_threshs x num_classes x num_recall``
      recall: an array of recall values
      iou_threshs: an array of IoU thresholds
      classes: the list of possible classes
      thresholds (None): an optional array of decision thresholds of shape
          ``num_iou_threshs x num_classes x num_recall``
      missing (None): a missing label string. Any unmatched objects are
          given this label for evaluation purposes
      backend (None): a :class:`COCOEvaluation` backend
class_docstr_tok: ["Class","that","stores","the","results","of","a","COCO","detection","evaluation",".","Args",":","samples",":","the",":","class",":","`","fiftyone.core.collections.SampleCollection","`","used","config",":","the",":","class",":","`","COCOEvaluationConfig","`","used","eval_key",":","the","evaluation","key","matches",":","a","list","of","``","(","gt_label",",","pred_label",",","iou",",","pred_confidence",",","gt_id",",","pred_id",")","``","matches",".","Either","label","can","be","``","None","``","to","indicate","an","unmatched","object","precision",":","an","array","of","precision","values","of","shape","``","num_iou_threshs","x","num_classes","x","num_recall","``","recall",":","an","array","of","recall","values","iou_threshs",":","an","array","of","IoU","thresholds","classes",":","the","list","of","possible","classes","thresholds","(","None",")",":","an","optional","array","of","decision","thresholds","of","shape","``","num_iou_threshs","x","num_classes","x","num_recall","``","missing","(","None",")",":","a","missing","label","string",".","Any","unmatched","objects","are","given","this","label","for","evaluation","purposes","backend","(","None",")",":","a",":","class",":","`","COCOEvaluation","`","backend"]
code: def __init__(
      self,
      samples,
      config,
      eval_key,
      matches,
      precision,
      recall,
      iou_threshs,
      classes,
      thresholds=None,
      missing=None,
      backend=None,
  ):
      super().__init__(
          samples,
          config,
          eval_key,
          matches,
          classes=classes,
          missing=missing,
          backend=backend,
      )
  
      self.precision = np.asarray(precision)
      self.recall = np.asarray(recall)
      self.iou_threshs = np.asarray(iou_threshs)
      self.thresholds = (
          np.asarray(thresholds) if thresholds is not None else None
      )
  
      self._classwise_AP = np.mean(precision, axis=(0, 2))
  
imports: import logging
  from collections import defaultdict
  import numpy
  import eta.core.utils
  import fiftyone.core.plots
  import fiftyone.utils.iou
  from .detection import DetectionEvaluation, DetectionEvaluationConfig, DetectionResults
label_desc: Use image node_id 1 to create a new COCODetectionResults object from inherited base classes: DetectionResults with example: obj = COCODetectionResults(samples, config, eval_key, matches, precision, recall, iou_threshs, classes, thresholds, missing, backend)