-
-
Notifications
You must be signed in to change notification settings - Fork 25.3k
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
[MRG+1] ENH add a parameter to SVC and NuSVC to break ties in predict if desired #12557
Conversation
@adrinjalali travis is not happy. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @adrinjalali
I'm not sure what |
It's an enhancement, IMO. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nitpicks
645ed71
to
489f734
Compare
Tests failing? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good apart for one comment below.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, aside from my two comments. The naming is a nitpick which can be ignored, but I feel that the random_state is important.
I can't see the difference between those images. |
@jnothman It's the area "inside" the intersection of the three borders, at around (1.5, 8) which has a concave extension of the top-left green class, iff tie breaking is used |
@jnothman I increased the plot size a bit, I hope that helps. |
I find it hard to see the difference between the two plots (took me more than a minute to see that the regions weren't the same at the center). The description should explain what differences to look for IMO. |
@thomasjpfan I'm not sure why the two azure pipelines are failing, the failing test is not touched by this PR (and I can't figure what the error is anyway). EDIT: is/was fixed on master |
@NicolasHug does this look good now? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, a few comments still.
Not sure if we want to raise an error if break_ties
is True and decision_function_shape
is not 'ovr'. I'd say yes but apparently the default is subject to change?
I'm not sure. I'd leave that to another discussion maybe. |
If we merge this before 0.21, it will be too late. I think we should raise an error, we've been very conservative so far on what users can do. |
@NicolasHug done :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Last comment, LGTM otherwise!
Thanks Adrin! |
Fixes #8277
This is a proposal to fix the issue in
SVC
andNuSVC
where the predict does not break ties but decision_function does, whendecision_function_shape='ovr' and n_classes > 2
The proposal is to add a parameter to
BaseSVC
, and return argmax of decision_function instead of calling libsvm's predict, which breaks ties according to the confidence values.The default value of the parameter is
False
to keep it backward compatible, and if needed, in the future, switch the default value toTrue
in an appropriate deprecation cycle.