feat: add class_names support to Precision, Recall, FBeta metrics - #3732
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 :) |
9c71695 to
817f33b
Compare
3a93092 to
7e12121
Compare
|
Hi @aaishwarymishra, thanks for the review! I've updated the implementation: |
|
Also try to reslove previous comments it gets hard to read the code :) |
aebabb1 to
7b8ce31
Compare
f16f33b to
9882fa3
Compare
vfdev-5
left a comment
There was a problem hiding this comment.
Thanks @aniketpandey05 , looks good to me!
88c2a26 to
443ed42
Compare
Signed-off-by: Aniket Pandey <aniketpandey25092005@gmail.com>
443ed42 to
a752d75
Compare
|
@aniketpandey05 can you please send a separate PR with a fix for the pyrefly: either put ignore the error or if it is possible to fix it would be fine as well. Thanks! |
|
Made this PR to fix pyrefly: #3835 |
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: