chanelcolgate commited on
Commit
cd9eb64
1 Parent(s): c9c9f4b

modified: average_precision.py

Browse files
Files changed (2) hide show
  1. average_precision.py +39 -13
  2. requirements.txt +2 -1
average_precision.py CHANGED
@@ -11,30 +11,50 @@
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
  # See the License for the specific language governing permissions and
13
  # limitations under the License.
14
- """TODO: Add a description here."""
15
 
16
  import evaluate
17
  import datasets
 
18
 
19
 
20
  # TODO: Add BibTeX citation
21
  _CITATION = """\
22
  @InProceedings{huggingface:module,
23
  title = {A great new module},
24
- authors={huggingface, Inc.},
25
- year={2020}
26
  }
27
  """
28
 
29
  # TODO: Add description of the module here
30
  _DESCRIPTION = """\
31
- This new module is designed to solve this great ML task and is crafted with a lot of care.
32
  """
33
 
34
 
35
  # TODO: Add description of the arguments of the module here
36
  _KWARGS_DESCRIPTION = """
37
- Calculates how good are predictions given some references, using certain scores
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  Args:
39
  predictions: list of predictions to score. Each predictions
40
  should be a string with tokens separated by spaces.
@@ -57,7 +77,9 @@ Examples:
57
  BAD_WORDS_URL = "http://url/to/external/resource/bad_words.txt"
58
 
59
 
60
- @evaluate.utils.file_utils.add_start_docstrings(_DESCRIPTION, _KWARGS_DESCRIPTION)
 
 
61
  class AveragePrecision(evaluate.Metric):
62
  """TODO: Short description of my evaluation module."""
63
 
@@ -70,15 +92,17 @@ class AveragePrecision(evaluate.Metric):
70
  citation=_CITATION,
71
  inputs_description=_KWARGS_DESCRIPTION,
72
  # This defines the format of each prediction and reference
73
- features=datasets.Features({
74
- 'predictions': datasets.Value('int64'),
75
- 'references': datasets.Value('int64'),
76
- }),
 
 
77
  # Homepage of the module for documentation
78
  homepage="http://module.homepage",
79
  # Additional links to the codebase or references
80
  codebase_urls=["http://github.com/path/to/codebase/of/new_module"],
81
- reference_urls=["http://path.to.reference.url/new_module"]
82
  )
83
 
84
  def _download_and_prepare(self, dl_manager):
@@ -89,7 +113,9 @@ class AveragePrecision(evaluate.Metric):
89
  def _compute(self, predictions, references):
90
  """Returns the scores"""
91
  # TODO: Compute the different scores of the module
92
- accuracy = sum(i == j for i, j in zip(predictions, references)) / len(predictions)
 
 
93
  return {
94
  "accuracy": accuracy,
95
- }
 
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
  # See the License for the specific language governing permissions and
13
  # limitations under the License.
14
+ """Average Precision"""
15
 
16
  import evaluate
17
  import datasets
18
+ from sklearn.metrics import average_precision_score
19
 
20
 
21
  # TODO: Add BibTeX citation
22
  _CITATION = """\
23
  @InProceedings{huggingface:module,
24
  title = {A great new module},
25
+ authors={chanelcolgate, Inc.},
26
+ year={2023}
27
  }
28
  """
29
 
30
  # TODO: Add description of the module here
31
  _DESCRIPTION = """\
32
+ Average Precision
33
  """
34
 
35
 
36
  # TODO: Add description of the arguments of the module here
37
  _KWARGS_DESCRIPTION = """
38
+ Note: To be consistent with the `evaluate` input conventions the scikit-learn inputs are renamed:
39
+ - `y_true`: `references`
40
+ - `y_pred`: `prediction_scores`
41
+
42
+ Scikit-learn docstring:
43
+ Average precision score.
44
+
45
+ Compute average precision (AP) from prediction scores.
46
+ AP summarizes a precision-recall curve as the weighted mean of precisions
47
+ achieved at each threshold, with the increase in recall from the previous
48
+ threshold used as the weight:
49
+ .. math::
50
+ \\text{AP} = \\sum_n (R_n - R_{n-1}) P_n
51
+ where :math:`P_n` and :math:`R_n` are the precision and recall at the nth
52
+ threshold [1]_. This implementation is not interpolated and is different
53
+ from computing the area under the precision-recall curve with the
54
+ trapezoidal rule, which uses linear interpolation and can be too optimistic.
55
+ Note: this implementation is restricted to the binary classification task or
56
+ multilabel classification task.
57
+ Read more in the :ref:`User Guide <precision_recall_f_measure_metrics`.
58
  Args:
59
  predictions: list of predictions to score. Each predictions
60
  should be a string with tokens separated by spaces.
 
77
  BAD_WORDS_URL = "http://url/to/external/resource/bad_words.txt"
78
 
79
 
80
+ @evaluate.utils.file_utils.add_start_docstrings(
81
+ _DESCRIPTION, _KWARGS_DESCRIPTION
82
+ )
83
  class AveragePrecision(evaluate.Metric):
84
  """TODO: Short description of my evaluation module."""
85
 
 
92
  citation=_CITATION,
93
  inputs_description=_KWARGS_DESCRIPTION,
94
  # This defines the format of each prediction and reference
95
+ features=datasets.Features(
96
+ {
97
+ "predictions": datasets.Value("int64"),
98
+ "references": datasets.Value("int64"),
99
+ }
100
+ ),
101
  # Homepage of the module for documentation
102
  homepage="http://module.homepage",
103
  # Additional links to the codebase or references
104
  codebase_urls=["http://github.com/path/to/codebase/of/new_module"],
105
+ reference_urls=["http://path.to.reference.url/new_module"],
106
  )
107
 
108
  def _download_and_prepare(self, dl_manager):
 
113
  def _compute(self, predictions, references):
114
  """Returns the scores"""
115
  # TODO: Compute the different scores of the module
116
+ accuracy = sum(i == j for i, j in zip(predictions, references)) / len(
117
+ predictions
118
+ )
119
  return {
120
  "accuracy": accuracy,
121
+ }
requirements.txt CHANGED
@@ -1 +1,2 @@
1
- git+https://github.com/huggingface/evaluate@main
 
 
1
+ git+https://github.com/huggingface/evaluate@main
2
+ scikit-learn