FIX validate properly zero_division=np.nan when used in parallel processing #27573
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
closes #27563
For the classification metrics, we make a constraint check with
constraints = Options(Real, {0.0, 1.0, np.nan})
. The issue is that we will check if a value is in the set withnp.nan is constraints
. In a single process,np.nan
should be the same singleton so we don't have any issue. However, in parallel process,np.nan
is apparently no the same singleton and thenp.nan
will not benp.nan
. This is indeed the case when running on of these score function (viamake_scorer
) within a cross-validation loop.This PR intends to make public the
_NanConstraint
via the string"nan"
such that we make the right check and not the use theis
statement.