-1 for testing for `classes_`. `is_classifier` has to be applicable before fitting, and adding more stop-gap conditions doesn't make it any more definitive. `is_classifier` is problematic, but particularly for meta-estimators (e.g. `Pipeline`) whose only polymorphic solution now requires the estimator to implement `__issubclass__` to conditionally return `ClassifierMixin`! I think this is bad design, but checking for `classes_` is far from helpful.