I'm happy to consider inheriting from `RuntimeWarning` rather than `UserWarning`, since it is intended for "dubious runtime behaviour". Yet we use `UserWarning`s everywhere else in sklearn, despite the docstring "Base class for warnings generated by user code."

The numpy warnings aren't relevant, IMO. This isn't some arbitrary numerical issue, it's about implementation details of metrics where the input isn't within the metric's natural domain, but the function must return some value, and there are multiple options as to what value.

So, what do you suggest?