-
-
Notifications
You must be signed in to change notification settings - Fork 25.9k
Incorrect calculation from sklearn.metrics.f1_score? #10812
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
NaN is not a score. For users blindly sorting scores and taking the last value, it is a thorn in the side. We have instead chosen to raise a warning and return 0. In what situation would NaN be more practically useful? |
I'm praticular, with macro-averaging, it would be very unhelpful to return NaN if a system failed to ever predict a rare class |
If you feel the documentation could be clearer, please offer a PR |
A very late comment on this: I calculate statistics of metrics across various groups and classifiers. For some of those groups and classifiers, there might be no positive instances. Returning NaN would be (very) desirable for me, because otherwise the returned 0s will (falsely) distort the computed metric statistics. Replacing all returned NaNs by 0 is easy if that is what the user desires (also forcing them to think about whether that actually makes sense, which is probably a good thing?), but simply replacing all returned 0s by NaN may be wrong - the value could also actually be zero. So I currently have no easy way to get the behavior I actually need, I believe? On a more general note, is it a good idea to support users in "blindly sorting scores" and sweeping actually occurring problems with those metrics under the rug? |
Description
The equation for the f1_score is shown here. I think the f1_score calculation from the sklearn.metrics.f1_score is incorrect for the following cases. This website also validate my calculation.
Steps/Code to Reproduce
Expected Results
f1_score should be
NaN
Actual Results
But the f1_score calculated from sklearn.metrics.f1_score is
0.0
The text was updated successfully, but these errors were encountered: