feat: add class_names support to Precision and Recall metrics#3732
feat: add class_names support to Precision and Recall metrics#3732aniketpandey05 wants to merge 10 commits into
Conversation
|
ok so like wont this code break There can be more metrics that can benefit from this change. I am not sure though. |
|
@aaishwarymishra would raising errors for those condition a better option or should we add full class_name support to fbeta |
|
I am not sure, adding support for the class names in |
|
Could we please clarify |
If we can compute F1 score per class than we should propagate the dict structure until the output of the F1 otherwise, take |
|
Hey @vfdev-5 , would adding a helper in metric.py to handle dict arithmetic in all operator overloads so the dict propagates through to the Fbeta output be a good approach? Also when average=True and class_names is set, should Fbeta return a scalar float or propagate the dict as is? |
I do not know, what would you suggest? Let's try to make it the most simple possible and intuitively clear. |
|
hey @vfdev-5 I think Fbeta should return a per-class dict if class_names is set, regardless of average. |
|
@rogueslasher ok, let's implement that this way and see if this works as expected |
|
Hey @vfdev-5, would adding a _dict_aware_op helper in metric.py and updating all operator overloads to use it for element-wise dict arithmetic, and skipping average in fbeta.py when class_names is set be a good idea? It touches all operator overloads in metric.py which affects all metrics. i am worried since it touches all operators overloads |
|
@aaishwarymishra ,would love your help in this can you look into it more please |
|
@rogueslasher well , I am not sure to be honest i wont touch the metric operators as it kind of affect every metric, for a case which can be only relevant for very few metrics, I think we should modify |
61e7680 to
7ea2eb5
Compare
|
@aaishwarymishra the header rules and other three preview checks are taking insane amount of time . is there any issue |
|
Documentation issue :) |
| <<<<<<< HEAD | ||
| or ``average=None``. If provided, ``compute()`` returns a ``dict`` mapping each class | ||
| ======= | ||
| or ``average=None``. If provided, :meth:`compute` returns a ``dict`` mapping each class | ||
| >>>>>>> 7ea2eb50590597780ffae1ab3dc4c7ede3c80be7 |
There was a problem hiding this comment.
I think its from the conflict you forgot to resolve
There was a problem hiding this comment.
I think you should try to pre-commit we recently moved from the black formatter to ruff, that may be the reason for docstring problem but not sure.
There was a problem hiding this comment.
There should be tests for recall too
Fixes #1466
Description:
Adds an optional
class_namesparameter to_BasePrecisionRecall, allowingcompute()to return a labeleddictinstead of an unnamed tensor whenaverage=Falseoraverage=None. Useful for per-class metric tracking where knowing which score belongs to which class matters for logging and visualization.Check list: