Elron commited on
Commit
a4305d3
1 Parent(s): e2267e1

Upload metrics.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. metrics.py +34 -18
metrics.py CHANGED
@@ -156,8 +156,8 @@ class Metric(Artifact):
156
  return self._parsed_prediction_type
157
 
158
  def get_metric_name(self):
159
- if self.artifact_identifier is not None:
160
- return self.artifact_identifier
161
  return self.__class__.__name__
162
 
163
  def consume_stream(self, stream: Stream):
@@ -1606,7 +1606,8 @@ class CustomF1(GlobalMetric):
1606
  prediction_type = "Any"
1607
  single_reference_per_prediction = True
1608
  groups = None
1609
- zero_division = 0.0
 
1610
 
1611
  @abstractmethod
1612
  def get_element_group(self, element, additional_input):
@@ -1737,6 +1738,35 @@ class CustomF1(GlobalMetric):
1737
  num_of_unknown_class_predictions += pd
1738
 
1739
  result = f1_result
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1740
  try:
1741
  result["f1_macro"] = sum(f1_result.values()) / len(result.keys())
1742
  result["recall_macro"] = sum(recall_result.values()) / len(
@@ -1750,20 +1780,6 @@ class CustomF1(GlobalMetric):
1750
  result["recall_macro"] = self.zero_division
1751
  result["precision_macro"] = self.zero_division
1752
 
1753
- amount_of_predictions = pd_total
1754
- if amount_of_predictions == 0:
1755
- result["in_classes_support"] = 1.0
1756
- else:
1757
- result["in_classes_support"] = (
1758
- 1.0 - num_of_unknown_class_predictions / amount_of_predictions
1759
- )
1760
- result["f1_micro"] = self.f1(pn_total, pd_total, rn_total, rd_total)
1761
- result["recall_micro"] = self.recall(pn_total, pd_total, rn_total, rd_total)
1762
- result["precision_micro"] = self.precision(
1763
- pn_total, pd_total, rn_total, rd_total
1764
- )
1765
- return result
1766
-
1767
 
1768
  class NER(CustomF1):
1769
  prediction_type = "List[Tuple[str,str]]"
@@ -2566,7 +2582,7 @@ class RemoteMetric(SingleStreamOperator, Metric):
2566
  ) # To avoid unintentional changes to the catalog contents
2567
  metric_pipeline.metric = RemoteMetric(
2568
  main_score=local_inner_metric.main_score,
2569
- metric_name=local_inner_metric.artifact_identifier,
2570
  endpoint=remote_metrics_endpoint,
2571
  )
2572
  return metric_pipeline
 
156
  return self._parsed_prediction_type
157
 
158
  def get_metric_name(self):
159
+ if self.__id__ is not None:
160
+ return self.__id__
161
  return self.__class__.__name__
162
 
163
  def consume_stream(self, stream: Stream):
 
1606
  prediction_type = "Any"
1607
  single_reference_per_prediction = True
1608
  groups = None
1609
+ zero_division: float = 0.0
1610
+ report_per_group_scores: bool = True
1611
 
1612
  @abstractmethod
1613
  def get_element_group(self, element, additional_input):
 
1738
  num_of_unknown_class_predictions += pd
1739
 
1740
  result = f1_result
1741
+ self.add_macro_scores(f1_result, recall_result, precision_result, result)
1742
+ self.add_in_class_support_scores(
1743
+ num_of_unknown_class_predictions, pd_total, result
1744
+ )
1745
+ self.add_micro_scores(rd_total, rn_total, pd_total, pn_total, result)
1746
+ if not self.report_per_group_scores:
1747
+ for group in groups:
1748
+ del result[f"f1_{group}"]
1749
+ return result
1750
+
1751
+ def add_micro_scores(self, rd_total, rn_total, pd_total, pn_total, result):
1752
+ result["f1_micro"] = self.f1(pn_total, pd_total, rn_total, rd_total)
1753
+ result["recall_micro"] = self.recall(pn_total, pd_total, rn_total, rd_total)
1754
+ result["precision_micro"] = self.precision(
1755
+ pn_total, pd_total, rn_total, rd_total
1756
+ )
1757
+
1758
+ def add_in_class_support_scores(
1759
+ self, num_of_unknown_class_predictions, pd_total, result
1760
+ ):
1761
+ amount_of_predictions = pd_total
1762
+ if amount_of_predictions == 0:
1763
+ result["in_classes_support"] = 1.0
1764
+ else:
1765
+ result["in_classes_support"] = (
1766
+ 1.0 - num_of_unknown_class_predictions / amount_of_predictions
1767
+ )
1768
+
1769
+ def add_macro_scores(self, f1_result, recall_result, precision_result, result):
1770
  try:
1771
  result["f1_macro"] = sum(f1_result.values()) / len(result.keys())
1772
  result["recall_macro"] = sum(recall_result.values()) / len(
 
1780
  result["recall_macro"] = self.zero_division
1781
  result["precision_macro"] = self.zero_division
1782
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1783
 
1784
  class NER(CustomF1):
1785
  prediction_type = "List[Tuple[str,str]]"
 
2582
  ) # To avoid unintentional changes to the catalog contents
2583
  metric_pipeline.metric = RemoteMetric(
2584
  main_score=local_inner_metric.main_score,
2585
+ metric_name=local_inner_metric.__id__,
2586
  endpoint=remote_metrics_endpoint,
2587
  )
2588
  return metric_pipeline